0

我有一个简单的 python 程序,它像这样写入 stderr::

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

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

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

huponexit 已关闭,我可以从另一个终端确认该程序在注销后还存在一段时间。

我的问题是“为什么它在写入 stderr 后就退出了?”

4

1 回答 1

1

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

如果您重定向stderr到一个文件,它应该会继续运行。

于 2013-06-26T16:33:20.103 回答