import os os.kill(pid, sig) os.killpg(pgid, sig)
Вызывает событие аудита os.killpg с аргументами pgid, sig.
Функция kill()
модуля os
посылает сигнал sig
процессу pid
. Константы для конкретных сигналов, доступных на хост-платформе, определяются в модуле signal
.
Функция os.kill()
событие аудита os.kill
с аргументами pid
, sig
.
Функция killpg()
посылает сигнал sig
в группу процессов pgid
. Константы для конкретных сигналов, доступных на хост-платформе, определяются в модуле signal
.
Функция os.killpg()
событие аудита os.killpg
с аргументами pgid
, sig
.
Windows: сигналы signal.CTRL_C_EVENT
и signal.CTRL_BREAK_EVENT
являются специальными сигналами, которые могут отправляться только в консольные процессы, которые совместно используют общее окно консоли, например некоторые подпроцессы. Любое другое значение для sig
приведет к безоговорочному завершению процесса API-интерфейсом TerminateProcess
, а для кода выхода будет установлено значение sig
. Версия os.kill()
для Windows дополнительно использует дескрипторы процессов для уничтожения.
Смотрите также signal.pthread_kill()
.
Родитель может отправлять сигналы дочернему процессу, используя функцию os.kill()
используя модуль signal
. В этом примере используется короткая пауза, чтобы дать дочернему процессу время для настройки обработчика сигнала. Реальное приложение, не будет нуждаться в вызове time.sleep()
. В дочернем процессе установим обработчик сигнала и сделаем небольшую паузу, чтобы предоставить родительскому процессу достаточно времени для отправки сигнала.
import os import signal import time def signal_usr1(signum, frame): "Обратный вызов вызывается при получении сигнала" pid = os.getpid() print(f'Получен USR1 в процессе {pid}') print('Forking...') child_pid = os.fork() if child_pid: print('PARENT: Пауза перед отправкой сигнала ...') time.sleep(1) print(f'PARENT: передача сигналов {child_pid}') os.kill(child_pid, signal.SIGUSR1) else: print('CHILD: Настройка обработчика сигнала') signal.signal(signal.SIGUSR1, signal_usr1) print('CHILD: Пауза в ожидании сигнала') time.sleep(5) # $ python3 test_kill.py # Forking... # PARENT: Пауза перед отправкой сигнала ... # CHILD: Настройка обработчика сигнала # CHILD: Пауза в ожидании сигнала # PARENT: передача сигналов 21168 # Получен USR1 в процессе 21168