1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| import signal
import time
from multiprocessing import Process
from os import getpid
def child_process():
# child process
# 忽略 child process 的 SIGHUP 信号
signal.signal(signal.SIGHUP, signal.SIG_IGN)
print("child process's pid: %d" % getpid())
while (1):
print("child's still alive.")
time.sleep(1)
def main():
p = Process(target=child_process)
"""
这里就不能再设置 daemon 属性为 True 了,
因为如果 daemon 属性为 True,则 Process 进程结束时会自动 terminate 所有的子进程
这样就没 SIGHUP 什么事了
"""
p.start()
# parent process
print("Parent process ends here.")
print("Will child process live forever?")
if __name__ == '__main__':
main()
|