为什么后台程序在注销后死亡



我有一个简单的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重定向到一个文件,它应该继续运行。

相关内容

  • 没有找到相关文章

最新更新