簡體   English   中英

為什么退出后台程序死了?

[英]Why program in the background dies after logging out?

我有一個簡單的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重定向到文件,則該文件應繼續運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM