2011-07-22 2 views
0

Im работает программа в C, которая вызывает сценарий оболочки. Иногда скрипт показывает ошибку (SIOCSARP: Invalid argument) Ошибка на самом деле не важна, это происходит, когда программа пытается добавить локальный IP-адрес, здесь это не важно.Вырезать стандартный вывод C linux

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

Shell код сценария:

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

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

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

Благодарности

+0

Как вы запускаете скрипт из C? – taskinoor

+0

'./myscript 2> & 1>/dev/null' подавляет весь вывод. –

+0

Можете ли вы уточнить «вырезать любой вывод в оболочку»? – multipleinterfaces

ответ

1

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

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

Исправлено. Гладкий; плавный!! Спасибо – shaggy

+0

Просто последний не работает вообще, но я в порядке с первым – shaggy

0
#!/bin/sh 
arp -s $1 $2 &> /dev/null 

будет выпускать любой выход.

0

Вы можете перенаправить поток ошибок в/DEV/нуль, как это:

arp -s $1 $2 2> /dev/null 
Смежные вопросы