0

次のようにstderrに書き込む単純なpythonプログラムがあります::

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最初は端末に接続されていました。ログアウト後、OS はその端末へのアクセスを無効にし (これは Unixセッション管理の一部です)、それに書き込みを試みるとSIGHUP、プロセスにシグナルが送信されます。これのデフォルトのアクションは、プロセスを強制終了することです。

ファイルにリダイレクトstderrすると、引き続き実行されます。

于 2013-06-26T16:33:20.103 に答える