Python subprocess
ライブラリを使用してサブプロセスを生成した後、を使用して子プロセスからのメッセージをシリアル化されたデータを含む親プロセスに渡します。私は親が(stdin
を介して)このデータに適用された関数の結果を返すことを望みます。本質的にはstdout/stderrファイル記述子でos.fsyncを呼び出すと、サブプロセスが終了する
、私はこのような何かを行うサブプロセス内の機能を持っている:
sys.stderr.write("some stuff to write")
# some time later
some_var = sys.stdin.read()
はしかし、これはstderr
入力を待っている間に、親をロック完了したので、私は呼び出そうとしました:
sys.stderr.flush()
os.fsync(sys.stderr.fileno())
ただし、これは機能しません。 os.fsync
が実行された後は何も実行されません。また、親プロセスでproc.poll()
と呼ぶと、子の戻りコードは1になります。
これを防ぐにはどうすればよいですか?私は別のアプローチを検討すべきでしょうか?