[ns_exec] Add SIGCHLD to default clone flags

Oren Laadan orenl at cs.columbia.edu
Fri Jul 10 10:52:02 PDT 2009

This is the default behavior. Without it, the process will not
report/be reported to the parent on a normal wait() call. Instead
the parent will need to use __WALL wait flag.

This caused a nasty bug where running 'rstr' from a checkpoint
image of a process executed with ns_exec would cause the shell
to skip to the next line in the script without waiting for the
restarted task to terminate, contrary to one's expectation.

TODO: if someone would like to run with anything else than the
SIGCHLD there, then add an option to ns_exec to allow it.


diff --git a/ns_exec.c b/ns_exec.c
index 3c3aa9e..0d2f54a 100644
--- a/ns_exec.c
+++ b/ns_exec.c
@@ -219,7 +219,7 @@ void write_pid(char *pid_file, int pid)
 int main(int argc, char *argv[])
 	int c;
-	unsigned long flags = 0, eflags = 0;
+	unsigned long flags = SIGCHLD, eflags = 0;
 	char ttyname[256];
 	int status;
 	int ret, use_clone = 0;

More information about the Containers mailing list