Don't ignore SIGCHLD since that affects waitpid on some platforms

Fix spelling error
Move exit_code into local scope
parent 05e89c1f
...@@ -89,7 +89,6 @@ static void die(const char* fmt, ...) ...@@ -89,7 +89,6 @@ static void die(const char* fmt, ...)
static void kill_child (void) static void kill_child (void)
{ {
int exit_code= 1;
int status= 0; int status= 0;
message("Killing child: %d", child_pid); message("Killing child: %d", child_pid);
...@@ -99,6 +98,7 @@ static void kill_child (void) ...@@ -99,6 +98,7 @@ static void kill_child (void)
pid_t ret_pid= waitpid(child_pid, &status, 0); pid_t ret_pid= waitpid(child_pid, &status, 0);
if (ret_pid == child_pid) if (ret_pid == child_pid)
{ {
int exit_code= 1;
if (WIFEXITED(status)) if (WIFEXITED(status))
{ {
// Process has exited, collect return status // Process has exited, collect return status
...@@ -113,7 +113,7 @@ static void kill_child (void) ...@@ -113,7 +113,7 @@ static void kill_child (void)
exit(exit_code); exit(exit_code);
} }
exit(exit_code); exit(1);
} }
...@@ -122,13 +122,12 @@ static void handle_signal (int sig) ...@@ -122,13 +122,12 @@ static void handle_signal (int sig)
message("Got signal %d, child_pid: %d", sig, child_pid); message("Got signal %d, child_pid: %d", sig, child_pid);
terminated= 1; terminated= 1;
if (child_pid > 0)
kill_child();
// Ignore further signals // Ignore further signals
signal(SIGTERM, SIG_IGN); signal(SIGTERM, SIG_IGN);
signal(SIGINT, SIG_IGN); signal(SIGINT, SIG_IGN);
signal(SIGCHLD, SIG_IGN);
if (child_pid > 0)
kill_child();
// Continune execution, allow the child to be started and // Continune execution, allow the child to be started and
// finally terminated by monitor loop // finally terminated by monitor loop
...@@ -237,7 +236,7 @@ int main(int argc, char* const argv[] ) ...@@ -237,7 +236,7 @@ int main(int argc, char* const argv[] )
break; break;
} }
// Check if child has exited, normally this wil be // Check if child has exited, normally this will be
// detected immediately with SIGCHLD handler // detected immediately with SIGCHLD handler
int status= 0; int status= 0;
pid_t ret_pid= waitpid(child_pid, &status, WNOHANG); pid_t ret_pid= waitpid(child_pid, &status, WNOHANG);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment