如何监控通过管道的流量?

时间:2009-03-17 20:51:38

标签: c unix pipe

我的情况是:我正在通过管道将输入从我的程序中的一个位置重定向到另一个位置。但是,它似乎没有正常工作,所以我想监视通过管道的内容。

目前,我正在使用dup2()来简单地覆盖管道中的stdin和stdout。

如何监控管道之间的情况?

3 个答案:

答案 0 :(得分:4)

当我在bash脚本中调试管道时,我经常会使用tee命令来捕获正在经历的内容而不会中断流程。

有一个相应的tee system call,看起来它可能对调试C代码中的管道很有用,但我从未尝试过。

答案 1 :(得分:1)

一个有用的工具是Pipe Viewer。我不认为它直接用于查看通过管道的实际数据,但可以让您监控进度和吞吐量。我认为timday的答案更符合您的要求。

答案 2 :(得分:1)

您可能还对pv工具(man pagereview)感兴趣:

“pv - 管道查看器 - 是一个基于终端的工具,用于通过管道监控数据的进度。它可以插入到两个进程之间的任何正常管道中,以直观地指示数据通过的速度,如何它已经花了很长时间,它有多接近完成,以及估计它将持续多长时间。“