linux如何知道有名管道FIFO是否被读空?

时间:2021-08-19 15:13:03
有程序A和程序B,通过FIFO来通信。
A向FIFO中写数据,B从FIFO中读数据。
A如何能知道B是否把数据读走了呢?
程序B只有可执行文件,无法做修改。
网上搜索说可以把FIONREAD传入ioctl来获取,但测试发现结果并不准确。

2 个解决方案

#1


TIOCOUTQ 代替 FIONREAD 试试

#2


FIONREAD是准确的,因为加了很多打印,而打印的传输是异步的而且速度比较慢。导致FIONREAD实际已经读完了,但是打印还没有传输完。

#1


TIOCOUTQ 代替 FIONREAD 试试

#2


FIONREAD是准确的,因为加了很多打印,而打印的传输是异步的而且速度比较慢。导致FIONREAD实际已经读完了,但是打印还没有传输完。