X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fmultifscgi.c;h=a865ec7fde1a48d877d1a4d85aa3f7bee906f98a;hb=7d1e14f405f389656604c68e18a381feabcd3d4a;hp=669240281820245e3624407368884b78faff135f;hpb=61a9ff68a875a192fdb6cbc4c535e59e326bf9f4;p=ashd.git diff --git a/src/multifscgi.c b/src/multifscgi.c index 6692402..a865ec7 100644 --- a/src/multifscgi.c +++ b/src/multifscgi.c @@ -23,6 +23,7 @@ #include #include #include +#include #ifdef HAVE_CONFIG_H #include @@ -37,6 +38,7 @@ static volatile int done, chdone; static void runchild(void) { execvp(chspec[0], chspec); + fprintf(stderr, "%s: %s", chspec[0], strerror(errno)); exit(127); } @@ -64,6 +66,8 @@ static void manage(void) pselect(0, NULL, NULL, NULL, NULL, &ns); if(chdone) { while((ch = waitpid(-1, &st, WNOHANG)) > 0) { + if(WCOREDUMP(st)) + fprintf(stderr, "multifscgi: child %i (%s) dumped core\n", ch, chspec[0]); for(i = 0; i < nchildren; i++) { if(children[i] == ch) children[i] = 0; @@ -106,6 +110,8 @@ static void killall(void) pselect(0, NULL, NULL, NULL, &to, &ns); if(chdone) { while((ch = waitpid(-1, &st, WNOHANG)) > 0) { + if(WCOREDUMP(st)) + fprintf(stderr, "multifscgi: child %i (%s) dumped core\n", ch, chspec[0]); for(i = 0; i < nchildren; i++) { if(children[i] == ch) children[i] = 0; @@ -133,14 +139,14 @@ static void term(int sig) static void usage(FILE *out) { - fprintf(out, "usage: multifscgi NUM PROGRAM [ARGS...]\n"); + fprintf(out, "usage: multifscgi [-h] NUM PROGRAM [ARGS...]\n"); } int main(int argc, char **argv) { int c; - while((c = getopt(argc, argv, "h")) >= 0) { + while((c = getopt(argc, argv, "+h")) >= 0) { switch(c) { case 'h': usage(stdout);