J'essaye de faire communiquer deux processus en utilisant un tuyau. Je l'ai fait dans le processus parent:faire des programmes python "chat" via pipe
process = subprocess.Popen(test, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
process.stdin.write("4\n");
output = process.stdout.read()
print output
et dans le processus de l'enfant:
inp = raw_input()
integer = int(inp)
print integer**2
while(True):
pass
j'attendre le processus parent pour imprimer 16 ... Malheureusement, il reste suspendu sans rien imprimer. Le remplacement de la boucle infinie par un arrêt pendant 5 secondes fait que le processus parent reste inactif pendant 5 secondes et APRES cette impression 16. Cela montre que le processus parent n'obtient la sortie de l'enfant qu'après son exécution.
Je voudrais savoir s'il est possible d'obtenir des informations avant la fin des programmes. Mon idée est d'aller passer des informations via ce canal, d'obtenir des entrées, de les traiter et de sortir le résultat dans le canal, afin que l'autre puisse continuer le traitement.
Une aide? Merci,
Manuel
Avez-vous essayé le rinçage du flux lorsque vous écrivez le ' "4 \ n" '? –
Oui, ce n'est pas le problème. Le processus fils obtient effectivement ce 4, et je l'ai vu parce que juste après avoir lu cette entrée, je l'écris dans un fichier normal, puis entrer dans la boucle infinie. Le processus parent est celui qui se bloque dans la partie read(). –
Par curiosité, pourquoi n'avez-vous pas utilisé 'sys.stdin.readline()' dans le processus fils? –