私のmpiアプリケーションはctrl-Cを捕捉するシグナルハンドラを持っています。あるいは、1つのウィンドウを切り捨てて、cmdウィンドウでこのアプリケーションをシリアルで実行すると動作します。それは傍受され、コードは最後の出力を行い、コードは正常に終了します。ウィンドウ上でmpiexecを通して信号を渡すには?
しかし、「mpiexec -np 2 myparapp.exe」と並行して実行し、ctrl-Cまたはctrl-breakを押すと、シグナルが殺されるため、アプリケーションに到達しないように見えます突然。私のシグナルハンドラがコード内の特定の場所に登録されているように、何か特別なことはありますか?
私はMSMPIを使用していますが、私はmpichのフォークであると理解しています。 Microsoftの
どのMPI実装を使用していますか? OpenMPIの場合は、http://linux.die.net/man/1/mpiexecを参照してください。 – user3630220
'mpiexec'はあなたのプロセスを意図的に殺すことによってcontrol-Cに応答している可能性があります。あるいは、おそらくcontrol-Cを捕まえておらず、殺されているようです。これを修正する方法があるかどうかは、特定の実装に依存することになります。 (Cランタイムはそれらをある程度エミュレートしますが、Windowsには実際に信号がないことに注意してください) –