获取管道利用率?
Get pipe utilization?
这已被标记为已回答,但如果有人知道可以实现此目的的类似 fstat 的系统调用,我很想听听。
我正在开发一些通过命名管道进行通信的应用程序(出于遗留原因需要)。管道具有固定容量(65536 字节是 Linux 默认值),当它变满时,将阻止写入,直到有足够的 space 可用。这意味着较慢的消费者将阻止较快的生产者。我希望能够做的是定期监控管道的利用率。
是否可以获取管道的数据大小(尚未从管道中读取的数据大小)? fstat 始终 returns 大小为 0,根据手册页的预期行为。
是否有 posix 合规的方式获取管道容量?显然,fcntl 从 Linux 2.6.35 开始就可以做到这一点。但是,这需要能够在 Linux.
的早期版本上 运行
在一端或两端以非阻塞模式打开管道,并始终尝试读取或写入完整的管道缓冲区容量。 read
/write
那么很可能 return 会比那个少。
多么非阻塞 read
returns 是当时管道中有多少。
什么是非阻塞 write
returns 是多少 space 留在管道中。
这已被标记为已回答,但如果有人知道可以实现此目的的类似 fstat 的系统调用,我很想听听。
我正在开发一些通过命名管道进行通信的应用程序(出于遗留原因需要)。管道具有固定容量(65536 字节是 Linux 默认值),当它变满时,将阻止写入,直到有足够的 space 可用。这意味着较慢的消费者将阻止较快的生产者。我希望能够做的是定期监控管道的利用率。
是否可以获取管道的数据大小(尚未从管道中读取的数据大小)? fstat 始终 returns 大小为 0,根据手册页的预期行为。
是否有 posix 合规的方式获取管道容量?显然,fcntl 从 Linux 2.6.35 开始就可以做到这一点。但是,这需要能够在 Linux.
的早期版本上 运行在一端或两端以非阻塞模式打开管道,并始终尝试读取或写入完整的管道缓冲区容量。 read
/write
那么很可能 return 会比那个少。
多么非阻塞 read
returns 是当时管道中有多少。
什么是非阻塞 write
returns 是多少 space 留在管道中。