J'essaie d'exécuter le code suivant en tant que sous-processus
#include<stdio.h>
int main()
{
int a;
printf("Hello\n");
fprintf(stderr, "Hey\n");
scanf("%d", &a);
printf("%d\n", a);
return 0;
}
Ce script fonctionne correctement : écriture sur stdin, lecture sur stdout et sur stderr.
#!/usr/bin/python
import subprocess
p1=subprocess.Popen("/mnt/test/a.out", stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
p1.stdin.write('1\n')
print p1.stdout.readline()
print p1.stderr.readline()
print p1.stdout.readline()
Mais ce script ne parvient pas à lire la sortie stdout et reste bloqué à cet endroit, même si le programme C imprime sur la sortie stdout avant de demander une quelconque entrée. Comment se fait-il que je ne parvienne pas à lire quoi que ce soit sur stdout ?
#!/usr/bin/python
import subprocess
p1=subprocess.Popen("/mnt/test/a.out", stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
print p1.stdout.readline()
p1.stdin.write('1\n')
print p1.stderr.readline()
print p1.stdout.readline()