2011-07-19 1 views
1

私はtcpdumpでキャプチャされたパケットを分析するためにCでプログラムを作成しています。私のプログラムでは、popenを使用してパイプをtcpdumpプロセスに開きます。このプロセスはパケットをキャプチャし、以下のようにrawデータをstdoutにダンプします。popenを使用したときのtcpdumpからの出力のサイレンシング

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

ただし、tcpdumpからの警告とエラーメッセージは、コンソールに表示されるstderrにまっすぐに進みます。私は何とかこれらを非表示にしたいので、私のプログラムからの出力だけが表示されます。

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

tcpdumpからstderr出力を簡単に消音する方法はありますか?/dev/nullに

答えて

4

リダイレクト標準エラー:STDOUT、2標準エラー出力をリダイレクトする

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

2> & 1の手段は、>ファイルは、ファイルに標準エラー出力をリダイレクトすることを意味する(と/ dev/nullにリダイレクトは、本質的に無視します出力)

man bash

+0

:リダイレクトの説明を探します。どうもありがとう。 – DanielGibbs

関連する問題