?

Log in

No account? Create an account

Check process by pid - Узором созвездий по мантии ночи

14.01.2016, Четверг

18:56:00 - Check process by pid

Previous Entry Поделиться Next Entry

Какой из способов проверки существования процесса лучше и чем:
1) проверить существовании каталога /proc/PID (где вмето PID - значение pid процесса)
2) послать ему сигнал 0 и проверить успешность

Что более переносимо? (вопрос не про винду, конечно, там /proc нет)
Какие ещё плюсы или минусы?

This entry was originally posted at http://arilou.dreamwidth.org/979865.html. Please comment there using OpenID.

Comments:

[User Picture]
From:vilgeforce
Date:14.01.2016 16:13:46
(Link)
А обработчики сигналов могут произвольный код оттуда возвращать, кстати? Или они все void Some()?
(Ответить) (Thread)
[User Picture]
From:dair_spb
Date:14.01.2016 16:48:36
(Link)
Из /proc надо брать ещё имя экзешника и проверять, что под этим pid нужный тебе процесс, а не какой-то другой.

Под Linux норм решение.
(Ответить) (Thread)
[User Picture]
From:vitus_wagner
Date:14.01.2016 18:34:59
(Link)
kill - более переносимо. Сработает и в системах, где /proc нету (или может быть, но в данный момент не смонтирована).
(Ответить) (Thread)
[User Picture]
From:prividen
Date:14.01.2016 18:35:00
(Link)
а я бы ps дёргал, как-то переносимее, чем в /proc лезть
(Ответить) (Thread)
[User Picture]
From:phd
Date:14.01.2016 21:14:18
(Link)
Формат выдачи ps — не переносим.
(Ответить) (Parent) (Thread)
[User Picture]
From:tim_caper
Date:15.01.2016 09:03:48
(Link)
Я бы поспорил :-) но в данном случае с ps просто незачем связываться.
(Ответить) (Parent) (Thread)
[User Picture]
From:phd
Date:15.01.2016 14:07:55
(Link)
Переносимый ps — это, например, psutil.
(Ответить) (Parent) (Thread)
[User Picture]
From:tim_caper
Date:15.01.2016 09:05:03
(Link)
Канонический способ - именно kill( ,0)
(Ответить) (Thread)
[User Picture]
From:tim_caper
Date:15.01.2016 12:28:21
(Link)
И, кстати, обязательно проверить errno:
EACCESS означает, что процесс-таки есть, хотя и чужой.
(Ответить) (Parent) (Thread)