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