在Windows 10上,os.write(fifo, line)
执行一次(我在命名管道上的接收进程得到它),然后它崩溃,得到以下结果:
os.write(fifo, line)
OSError: [Errno 22] Invalid argument
这是我简化的核心问题:
def run(cmd):
fifo = os.open("\\\\.\\pipe\\LogPipe", os.O_WRONLY)
proc = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr=subprocess.PIPE)
while proc.poll() is None:
line = proc.stdout.readline()
if line.decode() != "":
#print(line.decode()) #this works
os.write(fifo, line)
os.close(fifo)
if __name__ == "__main__":
run(["python", "-u", "cpu_bound_process_emitting_stderr_and_stdout_messages.py"])
它看起来与stdout = subprocess.PIPE, stderr=subprocess.PIPE
的设置有关,因为如果我跳过popen
,我可以多次os.write(fifo, line)
而不会出现问题;命名管道在两端都起作用
有人知道我做错了什么吗?多谢各位
目前没有回答
相关问题 更多 >
编程相关推荐