使用popen时从tcpdump中静音输出

时间:2011-07-19 22:19:38

标签: c popen stderr tcpdump silent

我正在用C编写一个程序来分析tcpdump捕获的数据包。在我的程序中,我使用popen打开一个tcpdump进程的管道,该进程捕获数据包并将原始数据转储到stdout,如下所示。

FILE *tcpdump = popen("tcpdump -s0 -w -", "r");

然而,来自tcpdump的警告和错误消息直接转到stderr,它将显示在控制台中。我想以某种方式隐藏这些,所以只显示我程序的输出。

我试过的一种方法是将2>&1附加到tcpdump命令,但是我的程序必须区分tcpdump警告/错误和原始数据包数据。

是否有一种简单的方法可以使tcpdump的stderr输出静音?

1 个答案:

答案 0 :(得分:5)

将stderr重定向到/ dev / null:

FILE *tcpdump = popen("tcpdump -s0 -w - 2>/dev/null", "r");

2>& 1表示将stderr重定向到stdout,2>文件表示将stderr重定向到文件(并重定向到/ dev / null基本上忽略输出)

man bash

中查找重定向说明