子进程在退出的时候会向父进程发送CHLD命令, 告知自己退出了。
import os
import sys
import time
import signal
def handler(sig, frame):
print(f'receive signal {sig}')
def main():
# 子进程在退出的时候, 父进程会受到子进程发送的SIGCHLD信号
signal.signal(signal.SIGCHLD, handler)
pid = os.fork()
if pid > 0:
print('in parent process')
elif pid == 0:
print('in child process')
sys.exit(0)
else:
print('error!')
time.sleep(1)
if __name__ == '__main__':
main()
输出
in parent process
in child process
receive signal 20
其中time.sleep(1)用来防止父进程过早退出无法接受子进程的退出信号。