Mine
public text v1 · immutablevoid sigchld_handler(int sig)
{
pid_t pid;
int status;
while((pid=waitpid(-1,&status,WNOHANG|WUNTRACED))>0){
if(!WIFSTOPPED(status))
deletejob(jobs,pid);
if(WIFSTOPPED(status)){
struct job_t *job=getjobpid(jobs,pid);
job->state=ST;
}
if(WIFSIGNALED(status)){
kill(pid,SIGINT);
printf("Job [%d] (%d) terminated by signal %d\n", pid2jid(pid), pid, sig);
}
}
return;
}