を使用してsubprocess.Popen()
、時間がかかるはずのプロセスを起動しています。ただし、起動直後にプロセスが失敗する可能性があります (リターン コード が生成されます1
)。その場合は、失敗をインターセプトして、ユーザーに説明メッセージを表示したいと考えています。プロセスを「リッスン」し、失敗した場合に応答する方法はありますか? Popen.wait()
私のpythonプログラムは実行し続けなければならないので、私はただ使うことはできません。
私が現在行っているハックはtime.sleep()
、Python プログラムに対して 0.5 秒間行うことです (サブプロセスが失敗する場合、サブプロセスが失敗するのに十分な時間であるはずです)。Python プログラムが再開した後、サブプロセスをポーリングして、失敗したかどうかを判断します。
より良い解決策はスレッドとを使用する可能性があると思いますPopen.wait()
が、私はPythonの比較的初心者です。
編集:サブプロセスは、私が起動しているJavaデーモンです。デーモンの別のインスタンスがシステムですでに実行されている場合、Java サブプロセスはリターン コード 1 で終了します。私は乱雑な Java 例外スタック トレースをインターセプトし、わかりやすいエラー メッセージをユーザーに表示したいと考えています。