我正在用C编写一个程序来分析tcpdump捕获的数据包。在我的程序中,我使用popen
打开一个tcpdump进程的管道,该进程捕获数据包并将原始数据转储到stdout,如下所示。
FILE *tcpdump = popen("tcpdump -s0 -w -", "r");
然而,来自tcpdump的警告和错误消息直接转到stderr,它将显示在控制台中。我想以某种方式隐藏这些,所以只显示我程序的输出。
我试过的一种方法是将2>&1
附加到tcpdump命令,但是我的程序必须区分tcpdump警告/错误和原始数据包数据。
是否有一种简单的方法可以使tcpdump的stderr输出静音?
答案 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