subprocess.communicate()を使用して、子プロセスのstdin/stdoutへの読み書きに問題があります。subprocess.communicate()は処理にゴミを送信しますか?
これは(Cで)子プロセスである
#include <stdio.h>
int main()
{
char buf[128];
printf("test\n");
gets(buf);
printf("%s", buf);
return 0;
}
これは、子プログラム
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:
を印刷するように期待することを呼び出すのpythonでプログラムであり、
しかし、proc.communicate()がgets()のEOFを引き起こし、子アプリケーションが終了するようです。とにかく、EOFを送信せずに子アプリケーションと通信できるのですか?私はアプリケーションにそれを書いてみたいと思います。
私の問題の解決策を見つけることが非常に重要だったので、私は以下の答えを受け入れました。私はまた、入力がバッファされているときに、 'fflush(stdout);'が必要だと付け加えたいと思っていましたが、これは問題を引き起こしていました。 – endeavormac