#c #процесс
Возможно ли завершить дочерний процесс не дожидаясь его окончания с помощью функции
wait()? Например, как завершить вот такой дочерний процесс:
pid_t pid;
switch(pid=fork()) {
case 0:
for(;;){}
default:
//здесь код, который завершает дочерний процесс
return 0;
P.S. Если вы знаете какой-то адекватный, не сильно мудреный материал по fork(), где
можно почерпнуть теоретические знания, то направьте меня, пжл.
Ответы
Ответ 1
Жестокий метод: kill(pid, SIGKILL); Или более мягко: kill(pid, SIGTERM); В первом случае дочерний процесс будет просто убит, во втором получит сигнал, который может обработать. Но SIGKILL убъёт процесс гарантированно, а в случае SIGTERM процесс может отказаться заканчивать работу. В приведённом коде, поскольку процесс, похоже, не содержит обработчиков сигналов, можно использовать любой метод, поскольку, как верно указал на мою ошибку @avp, SIGTERM при отсутствии обработчика также убьёт процесс.
Комментариев нет:
Отправить комментарий