在使用 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。
我能做些什么来防止这种情况发生?我应该考虑另一种方法吗?