#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 при отсутствии обработчика также убьёт процесс.
Комментариев нет:
Отправить комментарий