使用popen时从tcpdump中静音输出

Dan*_*bbs 2 c popen tcpdump silent stderr

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

FILE *tcpdump = popen("tcpdump -s0 -w -", "r");
Run Code Online (Sandbox Code Playgroud)

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

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

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

Foo*_*Bah 5

将stderr重定向到/ dev/null:

FILE *tcpdump = popen("tcpdump -s0 -w - 2>/dev/null", "r");
Run Code Online (Sandbox Code Playgroud)

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

寻找重定向解释 man bash