Вырезать стандартный вывод C linux - PullRequest
0 голосов
/ 22 июля 2011

Я запускаю программу на C, которая вызывает скрипт оболочки.Сценарий иногда показывает ошибку (SIOCSARP: Invalid argument). Ошибка не является существенной, она возникает, когда программа пытается добавить локальный IP, здесь это не важно.

Есть ли способ обрезать любой выводоболочка в linux здесь?

Код сценария оболочки:

#!/bin/sh
arp -s $1 $2

Запуск сценария:

sprintf(script, "/home/add_arp.sh %s %s", tableI[i].IPaddr, tableI[i].MACaddr);
system(script);

Спасибо

Ответы [ 3 ]

1 голос
/ 22 июля 2011

Если вывод, который вы видите, имеет стандартную ошибку , а не стандартный вывод, вы можете использовать:

arp -s $1 $2 2>/dev/null

Это сбрасывает весь вывод ошибок в область битов. Если он идет на стандартный вывод и вы хотите быть избирательным, вы можете использовать что-то вроде:

arp -s $1 $2 | grep -v 'SIOCSARP: Invalid argument'

Это удалит все строки, содержащие этот текст.

Вы также можете комбинировать стандартный вывод и ошибку со стандартным потоком вывода и быть выборочным:

arp -s $1 $2 2>&1 | grep -v 'SIOCSARP: Invalid argument'

И, наконец, если вы не хотите видеть любой вывод:

arp -s $1 $2 &>/dev/null

Хотя я бы не использовал этот последний самостоятельно, если бы не был уверен, что не хочу знать о любых проблемах.

0 голосов
/ 22 июля 2011

Вы можете перенаправить stderr в / dev / null следующим образом:

arp -s $1 $2 2> /dev/null
0 голосов
/ 22 июля 2011
#!/bin/sh
arp -s $1 $2 &> /dev/null

сбросит любой вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...