Pythonsubprocess
ライブラリを使用してサブプロセスを生成した後stderr
、子プロセスからシリアル化されたデータを含む親プロセスにメッセージを渡すために使用しています。stdin
次に、このデータに適用された関数の結果を(経由で)親に返すようにします。
本質的に、私はサブプロセス内に次のような関数を持っています。
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であるように見えます。
これを防ぐために何ができますか?別のアプローチを検討する必要がありますか?