Как правильно уничтожить процесс?

Все о скриптах

Модераторы: Art.i, vasya

Как правильно уничтожить процесс?

Сообщение ijkl » Вт апр 07, 2015 2:36 pm

Написал программку, которая спит заданное число сек. Протестировал на ней. Оказывается, в PHP proc_close() не убивает процесс, а ждет окончания его работы.

Значит для немедленного прекращения работы внешнего процесса надо использовать proc_terminate(). Но в комментах пишут, что он вроде бы не убивает потомков процесса и они могут превратиться в осиротевших зомби.

В описании функции proc_terminate() написано, что proc_terminate() по умолчанию посылает процессу сигнал SIGTERM. Что инициирует этот сигнал? Будут ли убиты потомки?
Чем он отличается от SIGKILL?
ijkl
 
Сообщений: 215
Зарегистрирован: Чт окт 03, 2013 5:42 pm

Re: Как правильно уничтожить процесс?

Сообщение ls » Ср апр 08, 2015 4:47 am

killall имяпроцесса
вполне решит проблему, завершение только основного процесса может привести к тому, что останутся его потомки так как они не отслеживают ситуацию завершения основного процесса
* FirstVDS в twitter в facebook и в вконтакте *
ls
Support team
 
Сообщений: 6388
Зарегистрирован: Чт мар 01, 2007 10:36 am
Откуда: FirstVDS

Re: Как правильно уничтожить процесс?

Сообщение ijkl » Пн апр 13, 2015 7:05 am

А как проверить наличие в системе осиротевших процессов?
ijkl
 
Сообщений: 215
Зарегистрирован: Чт окт 03, 2013 5:42 pm

Re: Как правильно уничтожить процесс?

Сообщение ls » Пн апр 13, 2015 7:48 am

Думаю вам поможет вот эта статья http://skeletor.org.ua/?p=1502 Ищем и убиваем zombie процессы
* FirstVDS в twitter в facebook и в вконтакте *
ls
Support team
 
Сообщений: 6388
Зарегистрирован: Чт мар 01, 2007 10:36 am
Откуда: FirstVDS


Вернуться в CGI, Perl, PHP

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2