Глушение вывода из tcpdump при использовании popen - PullRequest
2 голосов
/ 20 июля 2011

Я пишу программу на C для анализа пакетов, перехваченных tcpdump. В моей программе я использую popen, чтобы открыть канал для процесса tcpdump, который захватывает пакеты и выгружает необработанные данные в стандартный вывод, как показано ниже.

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

Однако предупреждения и сообщения об ошибках от tcpdump направляются прямо в stderr, который отображается в консоли. Я хотел бы как-то скрыть их, чтобы отображался только вывод из моей программы.

Один из способов, которым я пытался, это добавить 2>&1 к команде tcpdump, но тогда моей программе пришлось бы различать предупреждения / ошибки tcpdump и необработанные данные пакета.

Есть ли простой способ отключить вывод stderr из tcpdump?

1 Ответ

5 голосов
/ 20 июля 2011

перенаправить stderr в / dev / null:

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

2> & 1 означает перенаправление stderr в stdout, 2> file означает перенаправление stderr в файл (а перенаправление в / dev / null по существу игнорирует вывод)

Ищите объяснение перенаправления в man bash

...