1
我在测试用nohup
调用的命令是否确实没有得到SIGHUP信号。尽管被nohup调用,进程仍能继续运行,即使它收到SIGHUP?
我确认如果使用PuTTY登录我的CentOS盒子,请运行nohup python foo.py &
其中foo.py包含一个无限循环,如果我终止PuTTY,python程序仍会继续运行。
然后我写了sig.py,它处理并记录它接收到sig.txt的所有信号。
import signal, os
def handler(sig, frame):
f = open('sig.txt', 'a')
f.write('signal: ' + str(sig) + '\n')
f.close()
for i in range(1, 20):
if i in [9, 19]:
continue
print 'Setting signal handler for', i
signal.signal(i, handler)
f = open('sig.txt', 'w')
f.write('start\n')
f.close()
while True:
pass
然后我在PuTTY终端中运行nohup python sig.py &
。然后关闭PuTTY终端。
我打开一个新的PuTTY终端并检查sig.txt的内容,并在其中找到它。
$ cat sig.txt
start
signal: 1
所以看来运行的进程仍然收到SIGHUP。
如果正在运行的进程仍然收到SIGHUP,它如何在SIGHUP中调用时保持活跃状态?