[mpich-discuss] mpiexec hydra : signal handling SIGINT with popen
Roy, Hirak
Hirak_Roy at mentor.com
Sat Feb 14 11:27:00 CST 2015
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();
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpich.org/pipermail/discuss/attachments/20150214/81e9a41e/attachment.html>
-------------- next part --------------
_______________________________________________
discuss mailing list discuss at mpich.org
To manage subscription options or unsubscribe:
https://lists.mpich.org/mailman/listinfo/discuss
More information about the discuss
mailing list