我正在使用命名(FIFO)管道进行IPC,我想协调该程序只能在读取管道的程序读取管道中先前写入的数据时写入管道。所以我想阻止写入,直到管道为空。这可能吗?
我认为,一个选项是当管道已满时写入功能会阻塞。但我想这样做的数据量比Linux中的管道大小要少得多。例如,我希望该程序只能写入20个字节然后等待,直到另一端读取数据。我认为你不能缩小命名管道这么小。 (最小大小似乎是页面文件大小(4096字节)?)
谢谢!
答案 0 :(得分:0)
一种可能的解决方案是让读取过程在读取某些数据时向写入过程发送信号。你可以使用kill()将SIGTERM发送给编写器,因为可以捕获和处理SIGTERM。