Так как вы сказали, что он завис, вы можете попробовать:
strace -o my_prog.strace -f ./my_prog
и затем убей его после того, как он зависнет. Затем вы можете просмотреть выходной файл strace my_prog.strace
и попытаться выяснить, что пошло не так.
Возможно, вы захотите заглянуть на man-страницу strace, чтобы увидеть другие опции, которые вам могут понравиться - для меня особенно полезны те, которые позволяют отображать больше данных в буфере (и строке) ввода / вывода.
Если это не совсем зависание, вам нужно проверить возвращаемое значение из вашего звонка на system( )
, а затем проверить errno
.
редактировать
Что-то, о чем я только что подумал, могло вызвать зависание, было бы, если бы arping
была на самом деле ссылкой на корневую программу setuid
, которая выполняла sudo
на реальном arping
, и она ожидает ввода пароля для введите, но терминал для этой программы установлен неправильно.