Python Glossary English

все Python 3osфункция

os.kill

os — сигналы и приоритет

Посылает сигнал процессу по PID.

Синтаксис

os.kill(...)

На Unix сигнал 0 ничего не посылает и служит проверкой «процесс жив и мне доступен». На Windows так нельзя: любой сигнал, кроме CTRL_C_EVENT и CTRL_BREAK_EVENT, безусловно завершает процесс с кодом, равным номеру сигнала, — и kill(pid, 0) убьёт его с кодом 0. PID мог уже достаться другому процессу, поэтому посылать сигнал по старому номеру рискованно.

Примеры

import os
import signal
pid = os.fork()                        # → ? только Unix: 0 в дочернем процессе, PID ребёнка — в родительском
if pid: os.kill(pid, signal.SIGTERM)   # → ? родитель вежливо просит ребёнка завершиться, возвращается None
if pid: os.kill(pid, 0)                # → ? «нулевой» сигнал ничего не шлёт: так проверяют, жив ли процесс
if pid: os.kill(pid, signal.SIGKILL)   # → ? только Unix: безусловное убийство, обработчик его перехватить не может
os.kill(999999, signal.SIGTERM)        # → ProcessLookupError: процесса с таким PID нет

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности