注销后为什么后台程序会死掉?

时间:2013-06-26 16:27:32

标签: python terminal stderr

我有一个简单的python程序写入stderr,如::

import sys
import time
while 1:
    time.sleep(10)
    sys.stderr.write('.')

当我在后台运行它然后从bash注销时,它似乎因第一次写入stderr而死亡。

$ python err.py  &
[1] 25546
$ ..logout

huponexit已关闭,我可以在退出后确认该程序存在一段时间的另一个终端。

我的问题是“为什么写完stderr后才退出?”

1 个答案:

答案 0 :(得分:1)

stderr最初连接到终端。注销后,操作系统将撤消对该终端的访问(这是Unix 会话管理的一部分),尝试写入该操作会导致向该进程发送SIGHUP信号,并且默认操作是终止进程。

如果您将stderr重定向到某个文件,它应继续运行。