내 mpi 응용 프로그램에는 ctrl-C를 잡아 내거나 ctrl-break Windows를 처리하는 신호 처리기가 있으며이 응용 프로그램을 cmd 창에서 직렬로 실행하면 작동하는 것으로 보입니다. 인터셉트 된 후 코드는 마지막 출력을 내고 코드는 정상적으로 종료됩니다.Windows에서 mpiexec을 통해 신호를 전달하는 방법은 무엇입니까?
그러나 예를 들어 "mpiexec -np 2 myparapp.exe"와 병렬로 실행하고 ctrl-C 또는 ctrl-break를 누르면 신호가 내 응용 프로그램에 도착하지 않는 것 같습니다. 갑자기. 내 시그널 핸들러가 코드의 특정 위치에 등록되어 있는지 확인해야 할 필요가있는 특별한 것이 있습니까?
나는 MSMPI를 사용하고 있는데, 나는 mpich의 포크라고 생각합니다. 마이크로 소프트
어떤 MPI 구현을 사용하고 있습니까? OpenMPI라면 http://linux.die.net/man/1/mpiexec를 살펴볼 수 있습니다. – user3630220
'mpiexec'은 프로세스를 죽이거나 아마도 의도적으로 컨트롤 -c를 잡아 내지 만 컨트롤 C를 잡아 내지 못했을 가능성이 높습니다. 이 문제를 해결할 방법이 있는지 여부는 특정 구현 방식에 따라 다릅니다. (C 런타임은 어느 정도까지는 에뮬레이트하지만 Windows에는 실제로 신호가 없다는 것을주의하는 것이 도움이 될 수 있습니다.) –