3

興味深い問題があります。その中でpythonスクリプトを呼び出すbashスクリプトがあります。Python スクリプトは正常に実行されますが、完全に終了することはありません

Bash スクリプトの内容:

#! /usr/bin/env bash
python python_script.py
echo "bar"

Python スクリプトの内容:

#Much stuff
sys.exit("The python script just ended")

終了時に私が期待することは次のとおりです。

>The python script just ended
>bar

代わりに得られるのは次のとおりです。

>The python script just ended

キーボードで中断すると、bash は次のように続行します。

^C>bar

何を与える?明らかに、出口は適切に呼び出されており、Python スクリプトを呼び出した bash スクリプトの出力ステートメントとの間には何もありません。

(完全には理解していない既存のコードを変更しているため、Python スクリプトの「Much stuff」の動作について必ずしも具体的に説明することはできません。スクリプトの動作はほとんどそのままにしておきました。何よりも書式設定のために出力を変更しましたが、リクエストされた追加情報があれば喜んで提供します)

4

2 に答える 2

5

type の例外をsys.exit()スローしますSystemExit。スクリプトがこの例外をキャッチすると、 を超えて引き続き実行されますsys.exit()

また、非デーモン スレッドがある場合、これらがプロセスの終了を妨げている可能性があります。

その場合は、それらをデーモン スレッドに変更するか、何らかの方法でスクリプトを終了することを通知し、シャットダウンさせます。

最後に がありos._exit()ますが、それに頼る必要はありません。

于 2012-05-18T13:23:09.410 に答える