10 slavethread(void *arg
)
14 if (sigfillset(&sigmask
))
16 fprintf(stderr
, "Error line %u\n", __LINE__
);
20 if (pthread_sigmask(SIG_UNBLOCK
, &sigmask
, 0))
22 fprintf(stderr
, "Error line %u\n", __LINE__
);
35 if (pthread_create(&slave
, 0, &slavethread
, 0))
37 fprintf(stderr
, "Error line %u\n", __LINE__
);
45 int main(int argc
, char **argv
)
49 if (sigfillset(&sigmask
))
51 fprintf(stderr
, "Error line %u\n", __LINE__
);
55 if (pthread_sigmask(SIG_BLOCK
, &sigmask
, 0))
57 fprintf(stderr
, "Error line %u\n", __LINE__
);
61 int childpid
= fork();
65 fprintf(stderr
, "Error line %u\n", __LINE__
);
72 if (kill(childpid
, SIGTERM
))
74 fprintf(stderr
, "Error line %u\n", __LINE__
);
79 if (childpid
!= waitpid(childpid
, &status
, 0))
81 fprintf(stderr
, "Error line %u\n", __LINE__
);
85 assert(WIFSIGNALED(status
));
87 fprintf(stderr
, "Signal %d\n", WTERMSIG(status
));
88 assert(WTERMSIG(status
) == SIGTERM
);