--- a/src/utils/execmd.cpp
+++ b/src/utils/execmd.cpp
@@ -1,5 +1,5 @@
#ifndef lint
-static char rcsid[] = "@(#$Id: execmd.cpp,v 1.23 2007-05-21 13:30:22 dockes Exp $ (C) 2004 J.F.Dockes";
+static char rcsid[] = "@(#$Id: execmd.cpp,v 1.24 2007-05-23 08:28:35 dockes Exp $ (C) 2004 J.F.Dockes";
#endif
/*
* This program is free software; you can redistribute it and/or modify
@@ -180,6 +180,11 @@
if (e.pid) {
// Father process
+ sigset_t blkcld;
+ sigemptyset(&blkcld);
+ sigaddset(&blkcld, SIGCHLD);
+ pthread_sigmask(SIG_BLOCK, &blkcld, 0);
+
if (input) {
close(e.pipein[0]);
e.pipein[0] = -1;
@@ -280,6 +285,8 @@
e.pid = -1;
}
LOGDEB1(("ExecCmd::doexec: father got status 0x%x\n", status));
+ pthread_sigmask(SIG_UNBLOCK, &blkcld, 0);
+
return haderror ? -1 : status;
} else {