Hirak, The signal is forwarded to the MPI processes. I don't know how "popen" works compared to the "system" call, to comment on why one is working and the other isn't. -- Pavan
On Feb 14, 2015, at 11:27 AM, Roy, Hirak <[email protected]> wrote:
Hi All,
I am using a wrapper program which runs “mpiexec –n 5 actual_program” using a popen command. [ This is the simplified version of running my program. Ideally there is a TCL layer which does these things]. I have attached my program here.
My actual program has installed SIGINT signal handler and takes some action before it exits. It also writes lot of information on stdout and a file.
In general, if I press CTRL+C, I expect SIGINT to be passed to all the underlying processes. However, in my case, although the processes receive SIGINT, they are killed immediately.
I have noticed that If I run using system(“mpiexec –n 5 actual_program”), SIGINT is delivered and appropriate actions are taken.
I am a bit confused here. The only thing I can relate is that there is somehow a SIGPIPE signal which might lead mpiexec to kill all subprocesses. Can someone please have a look and let me know what is the issue here and what can be a done.
Thanks, Hirak
// wrapper program
#include <stdio.h> #include <signal.h> #include <string.h> #include <stdlib.h>
int main () {
const char* command = "mpiexec -n 5 ./mpiprog.out"; #if 1 FILE *fp = popen(command, "r"); if (!fp) { printf ("failed\n"); } while (!feof(fp)) { char ch ; fscanf(fp, "%c", &ch); printf ("%c", ch); }
pclose(fp); #else system (command); #endif }
//mpiprog.c #include "mpi.h" #include <signal.h> #include <string.h> #include <stdio.h> #include <stdlib.h>
void signalHandler(int signum, siginfo_t *info, void *ptr) { fprintf (stdout,"******** SIGINT *******************\n"); MPI_Finalize(); exit (0); }
int main(int argc, char** argv) { struct sigaction act; memset(&act, 0, sizeof(act)); act.sa_sigaction = signalHandler; act.sa_flags = SA_SIGINFO; sigaction(SIGINT, &act, NULL);
MPI_Init(&argc, &argv);
while (1) {
sleep (10); printf ("---Hhahaha\n"); }
MPI_Finalize(); }
_______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
-- Pavan Balaji ✉️ http://www.mcs.anl.gov/~balaji _______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss