Я создаю простую функцию сетевого сканирования с помощью nmap и C. Я хочу использовать popen() для выполнения nmap, но nmap занимает около 30 секунд, потому что я просматриваю широкий диапазон IP-адресов.Выполнение медленного процесса с помощью popen()
Итак, есть ли способ проверить, когда команда закончила выполнение? Я не хочу, чтобы мой C-код зависал при системном вызове, вместо этого я хотел бы просто проверить флаг или что-то в цикле, который будет знать, когда popen/nmap закончит, чтобы другие части моей программы на C не приходили остановка. Это возможно??
Спасибо!
Конечно, это возможно. Что вы делали до сих пор? Вы пробовали ['fork (2)'] (http://man7.org/linux/man-pages/man2/fork.2.html)? напрямую? –
Сигнал 'SIGCHLD' отправляется родительскому процессу дочернего процесса при его выходе. –
@iharob Я не пробовал вилку, но мой разум уже склонялся к pthreads, поэтому я думаю, что возьму этот маршрут. Спасибо – Dark