通过带恶魔化的命名管道读写数据

Reading and writing data via named pipe with demonization

我有两个脚本:
第一个 ('Reader') 正在从命名管道读取数据,第二个 ('Writer') 正在将数据写入命名管道。我是来自守护进程的运行 'Writer'(守护进程是用双叉机制创建的)。如果 'Writer' 崩溃,我想在 'Reader' 中打印一条关于它的消息。请参阅以下 Python 代码('Reader'):

pipe = open(pipe_path, 'r')
while True:
    data = pipe.readline()
    if not data:
        print('Alarm')
        break

但是当 'Writer' 崩溃时 'Reader' 卡在以下行:

data = pipe.readline()

但是如果我从终端 运行 'Writer' 一切正常(管道中没有数据时正在打印警报消息)。如果我打开管道,一切正常:

os.open(pipe_path, os.O_RDONLY | os.O_NONBLOCK)

但是这个方法不适合我,因为我需要等待一段时间才能开始 'Writer' 开始向管道写入数据

为了不创建僵尸我接下来在守护进程中做:

def childHandler(signum, frame):
    os.wait3(os.WNOHANG)
signal.signal(signal.SIGCHLD, zombieKiller)

如何防止'Reader'卡住并正确处理来自子进程的信号?

尝试在守护进程中使用它:

fdPipe = os.open(pipe_path, os.O_WRONLY | os.O_NONBLOCK)