私は特定の入力を与えるとクラッシュするアプリケーションがあります。コマンドラインプロンプトで、私は "アクセス違反"メッセージなどを見ることができます そして、プログラムは入力を処理するときに終了しません(終わりのないループの一種)。それを削除するには、Ctrl + Cキーを押す必要があります。Python - プログラムのクラッシュ後にプログラムを続ける
私の質問は次のとおりです。どのようにプログラムからそのクラッシュをスキップできますか?
私の目標は、プログラムがクラッシュした場合にそのプログラムにその入力を与えることです。 入力を保存したいのですが、クラッシュしない場合は、入力して を削除して次の入力を続けますか?
私のコードは次のとおりです。
import subprocess
program_to_call = "C:\\Program Files\\Software\\application.exe"
arg = "-s"
file = "C:\\Users\\test\\Desktop\\Project\\templates\\file1"
subprocess.Popen([program_to_call, arg, file], shell=True) # <---after this line, it does not go to next line
... code for removing etc.
私は、Pythonを学んでおりますので、私はあなたの答えに私の問題のための便利なPythonライブラリにいくつかのアドバイス、概念やヒントを見たいのですが。コードスニペットを書く必要はありません。
注:私はWindows 7(x86)を使用しており、pythonのバージョンは2.7.1です。
Popenは終了を待つ必要があるので、代わりに 'subprocess.call([program_to_call、arg、file])'を試すことができます。 –
はい、エラーメッセージをキャプチャしてクラッシュするかどうかを判断したいと思います。したがって、** code = subprocess.check_output(...)**を使用しましたが、ハングします。 – aminakoy
エラーメッセージがstdoutに書き込まれる可能性があります。引数 'stderr = sys.stdout'を使って' subprocess.check_output'を呼び出すのがうまくいくかどうか試してください。 – L3viathan