- cstat = signal(SIGCHLD, SIG_DFL);
- waits.w_status = system(dfgen_cmd);
- signal(SIGCHLD, cstat);
- if (waits.w_termsig) {
+
+ action.sa_flags = 0;
+ sigemptyset(&action.sa_mask);
+ action.sa_handler = SIG_DFL;
+ sigaction(SIGCHLD, &action, &prevaction);
+ waits = system(dfgen_cmd);
+ sigaction(SIGCHLD, &prevaction, NULL);
+ if (WIFSIGNALED(waits)) {