我的mpi應用程序有一個信號處理程序來捕獲ctrl-C或ctrl-break一個窗口,並且當此應用程序在cmd窗口中以串行方式運行時,它可以工作。它被攔截,然後代碼完成其最後的輸出,並且代碼優雅地退出。但是,當我將它與例如「mpiexec -np 2 myparapp.exe」並行運行並按下ctrl-C或ctrl-break時,該信號似乎無法訪問我的應用程序,因爲它被殺死突然。有什麼特別的我需要做的,如確保我的信號處理程序在代碼中的特定位置註冊?如何在Windows上通過mpiexec傳遞信號?
我正在使用MSMPI,我知道這是一個來自mpich的分支。
您正在使用哪種MPI實現?如果OpenMPI,你可能想看看http://linux.die.net/man/1/mpiexec。 – user3630220
似乎'mpiexec'通過殺死你的進程來響應control-C,可能是故意的,或者它可能只是沒有捕獲到control-C而被自己殺死。是否有任何方法可以解決這個問題將取決於具體的實施。 (可能有助於指出Windows實際上沒有信號,儘管C運行時在一定程度上模擬了它們。) –