我有一个简单的python程序,它可以像这样写入stderr::
import sys
import time
while 1:
time.sleep(10)
sys.stderr.write('.')
当我在后台运行这个程序,然后从bash注销时,它似乎在第一次写入stderr时就死了。
$ python err.py &
[1] 25546
$ ..logout
huponexit关闭,我可以从另一个终端确认程序在注销后还可以运行一段时间。
我的问题是"为什么它在写入stderr后就退出了?"
stderr
最初连接到终端。注销后,操作系统会取消您对该终端的访问(这是Unix会话管理的一部分),尝试对其进行写入会导致向进程发送SIGHUP
信号,默认操作是终止进程。
如果将stderr
重定向到一个文件,它应该继续运行。