Python永远开放fifo块

Python永远开放fifo块,python,named-pipes,Python,Named Pipes,我试图在Python中使用命名管道实现IPC,但存在一个问题打开阻止该过程 import os path = '/tmp/fifo' os.mkfifo(path) fifo = open(path, 'w') # never returns 与打开(路径“r”)相同。 我做错了什么 Python 3.6.1需要函数os.mkfifo(path)创建路径(如果所有文件夹不存在,则构建所有路径) 因此,您需要像这样添加文件名:fifo=open(path+file,'r') 通常,FIFO用作“

我试图在Python中使用命名管道实现IPC,但存在一个问题<代码>打开阻止该过程

import os
path = '/tmp/fifo'
os.mkfifo(path)
fifo = open(path, 'w') # never returns
与打开(路径“r”)相同。

我做错了什么


Python 3.6.1

需要函数
os.mkfifo(path)
创建路径(如果所有文件夹不存在,则构建所有路径)

因此,您需要像这样添加文件名:
fifo=open(path+file,'r')

通常,FIFO用作“客户端”和“服务器”类型进程之间的集合点:服务器打开FIFO进行读取,客户端打开FIFO进行写入请注意,mkfifo()不会打开FIFO-它只是创建集合点

根据,您需要使用
fifo=open(路径,dir_fd='w')
解决了这个问题<编码>打开阻塞,直到另一侧的管道打开

不起作用
os.mkfifo(path,dir\u fd='w')
throws
TypeError:参数应为整数或无,而不是str
dir\u fd=os.O\u WRONLY
不。但是结果是一样的:
open
blocks ever
dir\u fd
应该是一个文件描述符,读/写标志。
path+file
将只连接字符串,在我的例子中,
/tmp
显然存在,不需要创建它
os.mkfifo
成功创建文件
ls-latrh/tmp/pipe prw-r--r--1 oleg用户0 10月3日08:30/tmp/pipe