Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Как принудительно завершить дочерний процесс


Автор: vitalyisaev2 13.6.2013, 10:10
Здравствуйте! Представьте, что у нас есть программа, в которой последовательно выполняются несколько задач. Всё это пока что сделано через многопроцессность (может, нужна многопоточность?)

Код

....
int exit_status;
pid_t reboot, waitress;
....
reboot = fork(); //Создаём дочерний процесс
if (reboot ==0)
{
      ...
      execl(reboot_script, NULL);  //Запускаем в нём скрипт, получающий доступ к удалённому компьютеру через SSH и перезагружающий его. Если цель достигнута, связь рвётся, программа зависает на минуту и более.
      ...
}
waitress = wait(&exit_status); //Ждём  завершения дочернего процесса
if (WIFEXITED (exit_status))
{
       //продолжаем работу
}



Вопрос в следующем: как можно завершить дочерний процесс заранее, не дожидаясь, пока SSH поймёт, что у нас broken pipe. Может, можно послать какой-то сигнал принудительного закрытия, скажем, через 1 секунду? 
Спасибо! 

Автор: xvr 13.6.2013, 12:33
Цитата(vitalyisaev2 @  13.6.2013,  10:10 Найти цитируемый пост)
Может, можно послать какой-то сигнал принудительного закрытия, скажем, через 1 секунду?

Можно. man 2 kill
Список сигналов - man 7 signal, и выбирайте какой вам больше подойдет


Автор: vitalyisaev2 19.6.2013, 13:11
Спасибо! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)