2

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

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

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

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

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

4

1 回答 1

5

将标准错误重定向到 /dev/null:

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

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

在中查找重定向说明man bash

于 2011-07-19T22:26:37.953 回答