Процесс зомби, созданный в коде и убитый в другой части

Я хочу написать "создатель зомби" и "терминатор зомби". Суть в том, что я хочу создать зомби в одной части и завершить их в другой части кода. Я использую C.

Пример:

create_zombie(); //let's say it's a spawn, using fork etc.

/* a houndred lines below */

kill_zombie(PID); // PID is determinated by user, I want to leave him the choice

Я знаю, как сделать это с помощью fork(), если.. еще, но это не главное. Я ищу какой-то пульт дистанционного управления. Это возможно? Спать с ним долгое время может быть решением?

2 ответа

Решение

Я предполагаю, что Linux, но процесс должен быть похож на другие операционные системы. Вы хотите посмотреть в kill() объявленная функция обычно объявляется в signal.h заголовочный файл Это позволит вам отправить сигнал на определенный PID от вашего убийцы зомби. Самый простой подход - послать вашему зомби сигнал об уничтожении (SIGKILL). SIGKILL не может быть пойман или проигнорирован, и немедленно убить процесс мертвым.

Если вам нужно сделать некоторую очистку в процессе зомби, вы можете создать обработчик сигнала с signal() функция. Это позволит вам указать функцию для вызова, когда процесс получает сигнал. Эта функция будет реализовывать ваш код очистки, а затем exit(),

В Linux ваша оболочка должна иметь команду kill, которая имитирует функциональность kill(), Синтаксис обычно kill -s 9 PID, Это отправит сигнал SIGKILL (сигнал № 9) на PID процесса.

Я надеюсь, что этот ответ подталкивает вас в правильном направлении.

Когда вы разветвляете процесс, fork возвращает 0 в дочернем процессе и идентификатор дочернего процесса в родительском. Вы можете сохранить их в массиве, записать их в файл или записать в канал и не "открывать" другой конец, пока он вам не понадобится.

Другие вопросы по тегам