2

tcpdumpによってキャプチャされたパケットを分析するプログラムをCで作成しています。私のプログラムではpopen、以下に示すように、パケットをキャプチャして生データをstdoutにダンプするtcpdumpプロセスへのパイプを開くために使用します。

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

ただし、tcpdumpからの警告とエラーメッセージは、コンソールに表示されるstderrに直接送信されます。どういうわけかこれらを隠したいので、私のプログラムからの出力だけが表示されます。

私が試した1つの方法は、tcpdumpコマンドに追加2>&1することでしたが、プログラムはtcpdumpの警告/エラーと生のパケットデータを区別する必要がありました。

tcpdumpからのstderr出力を無音にする簡単な方法はありますか?

4

1 に答える 1

5

stderrを/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 に答える