import os os.wait()
Функция wait()
модуля os
ждет завершения дочернего процесса и возвращает кортеж, содержащий его pid
и индикацию состояния выхода: 16-битное число, младший байт которого является номером сигнала, который убил процесс и старший байт которого является состоянием выхода (если номер сигнала равен нулю). Старший бит младшего байта устанавливается, если был создан файл дампа ядра.
Для преобразования состояния выхода в код выхода можно использовать функцию os.waitstatus_to_exitcode()
.
Доступность: Unix.
Когда не имеет значения, какой дочерний процесс может завершиться первым, используйте os.wait()
. Он возвращается, как только завершается любой дочерний процесс.
# test_wait.py import os import sys import time for i in range(2): print(f'PARENT {os.getpid()}: Forking {i}') worker_pid = os.fork() if not worker_pid: print(f'WORKER {i}: Starting') time.sleep(2 + i) print(f'WORKER {i}: Finishing') sys.exit(i) for i in range(2): print(f'PARENT: Waiting for {i}') done = os.wait() print(f'PARENT: Child done: {done}') # $ python3 test_wait.py # PARENT 24512: Forking 0 # PARENT 24512: Forking 1 # WORKER 0: Starting # PARENT: Waiting for 0 # WORKER 1: Starting # WORKER 0: Finishing # PARENT: Child done: (24513, 0) # PARENT: Waiting for 1 # WORKER 1: Finishing # PARENT: Child done: (24514, 256)
Функция os.wait()
возвращает идентификатор процесса и код завершения, упакованный в 16-битовое значение. Младший байт представляет номер сигнала, прекратившего выполнение процесса, а старший - код состояния, возвращенный процессом по его завершении.