+ restore_sigchild= 0;
+ if (sigaction(SIGCHLD,NULL,&old_sigchild)) return -1;
+ if (old_sigchild.sa_handler == SIG_IGN) {
+ struct sigaction new_sigchild;
+
+ new_sigchild.sa_handler= SIG_DFL;
+ sigemptyset(&new_sigchild.sa_mask);
+ new_sigchild.sa_flags= 0;
+ if (sigaction(SIGCHLD,&new_sigchild,&old_sigchild)) return -1;
+ restore_sigchild= 1;
+ }
+