使用popen时使来自tcpdump的输出静音

使用popen时使来自tcpdump的输出静音,c,popen,stderr,tcpdump,silent,C,Popen,Stderr,Tcpdump,Silent,我正在用C编写一个程序来分析tcpdump捕获的数据包。在我的程序中,我使用popen打开到tcpdump进程的管道,该进程捕获数据包并将原始数据转储到stdout,如下所示 FILE *tcpdump = popen("tcpdump -s0 -w -", "r"); 但是,来自tcpdump的警告和错误消息会直接发送到stderr,并显示在控制台中。我想以某种方式隐藏这些,因此只显示程序的输出 我尝试的一种方法是将2>&1附加到tcpdump命令,但是我的程序必须区分tcpdump警告/错

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

FILE *tcpdump = popen("tcpdump -s0 -w -", "r");
但是,来自tcpdump的警告和错误消息会直接发送到stderr,并显示在控制台中。我想以某种方式隐藏这些,因此只显示程序的输出

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


有没有一种简单的方法使tcpdump的stderr输出静音?

将stderr重定向到/dev/null:

FILE *tcpdump = popen("tcpdump -s0 -w - 2>/dev/null", "r");
2> &1表示将stderr重定向到stdout,2>file表示将stderr重定向到file(而重定向到/dev/null实际上会忽略输出)

manbash