【发布时间】:2022-01-10 05:14:59
【问题描述】:
我使用 C 和 python 程序创建了一个 fifo。 fifo 是在 C 程序中创建的,它执行读取操作,而写入是在 Python 中完成的。我的问题如下:
- 如果我的阅读器(C 程序)被强行杀死,我的编写器会继续向 fifo 写入。我该如何处理这个问题,以便在读者被杀死时作家退出?
- 当 reader 被杀时,writer 是否收到 SIGPIPE 信号?
【问题讨论】:
-
为什么不写一个简单的示例程序来测试它来自己回答呢?
-
一定会试一试的。
-
之后您可以发布自己问题的答案 :-)
-
你应该展示你的代码。如果读取器是唯一打开 FIFO 进行读取的进程,则在尝试写入时应立即使用 SIGPIPE 向写入器发出信号——注意缓冲 I/O,这可能会延迟实际调用
write()系统调用的时间。如果作者忽略了 SIGPIPE,那么 write() 系统调用将返回一个错误条件。如果有多个进程打开 FIFO 进行读取,则 所有 读取器必须在写入器收到信号之前死亡。
标签: python c named-pipes fifo sigpipe