获取管道利用率?

时间:2015-08-02 01:50:04

标签: c linux pipe named-pipes

这标记为已回答,但如果有人知道可以实现这一目标的类似系统调用,我很乐意听到。

我正在开发一些通过命名管道进行通信的应用程序(由于遗留原因需要)。管道具有固定容量(默认为65536字节),当它填满时,块会写入,直到有足够的空间可用。这意味着较慢的消费者将阻止更快的生产者。我希望能够做的是定期监控管道的使用情况。

是否可以获取管道的数据大小(尚未从管道中读取数据的大小)?根据手册页,fstat总是为大小,预期行为返回0。

是否有符合posix标准的获取管道容量的方法?显然,自Linux 2.6.35以来,fcntl可以做到这一点。但是,这需要能够在早期版本的Linux上运行。

1 个答案:

答案 0 :(得分:1)

在一端或两端以非阻塞模式打开管道,并始终尝试读取或写入完整的管道缓冲区容量。 read / write很可能会比那更少。

非阻塞read返回的是当时管道中的数量。 非阻塞write返回的是管道中剩余的空间。