我正在用 C 编写一个程序来分析 tcpdump 捕获的数据包。在我的程序中,我使用 popen
打开一个通往 tcpdump 进程的管道,该进程捕获数据包并将原始数据转储到标准输出,如下所示。
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 重定向到文件(重定向到/dev/null 本质上会忽略输出)
在man bash
中查找重定向说明
关于c - 使用 popen 时静默 tcpdump 的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6754807/