Как проверить, жив ли процесс в Python в Linux? - PullRequest
3 голосов
/ 11 июля 2009

У меня есть идентификатор процесса в Python. Я знаю, что могу убить его с помощью os.kill (), но как мне проверить, жив ли он? Есть встроенная функция или мне нужно перейти в оболочку?

Ответы [ 2 ]

17 голосов
/ 11 июля 2009

Используйте модуль subprocess для запуска процесса. Существует функция proc.poll () - она ​​возвращает None, если процесс еще жив, в противном случае возвращает код возврата процесса.

http://docs.python.org/library/subprocess.html

14 голосов
/ 11 июля 2009

os.kill не убивает процессы, он посылает им сигналы (они плохо названы).

Если вы отправляете сигнал 0, вы можете определить, разрешено ли вам отправлять другие сигналы. Код ошибки укажет, является ли это проблемой с правами доступа или отсутствующим процессом.

Подробнее см. man 2 kill.

Кроме того, если процесс является вашим ребенком, вы можете получить SIGCHLD, когда он умрет, и вы можете использовать один из вызовов wait для его решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...