У меня проблемы с чтением / записью в stdin / stdout в дочернем процессе с subprocess.communicate ().
Это дочерний процесс (в C)
#include <stdio.h>
int main ()
{
char buf[128];
printf("test\n");
gets(buf);
printf("%s", buf);
return 0;
}
Это программа на python, которая вызывает эту дочернюю программу
import subprocess
proc = subprocess.Popen('./test', stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdin, stderr = proc.communicate()
print stdin
proc.communicate(stdin)
stdin, stderr = proc.communicate()
print stdin
print stdin
Я ожидаю, что это напечатает
test
input was test:
Однако, похоже, что proc.communicate () вызывает EOF для gets (), вызывая завершение дочернего приложения. Могу ли я в любом случае связаться с дочерним приложением, не отправляя EOF? Т.е. я хотел бы прочитать приложение, а затем написать в него.