}
static void sigarrived_handler(int signum) {
+ int esave = errno;
static char x;
switch (signum) {
case SIGTERM:
default:
abort();
}
- write(signal_self_pipe[1],&x,1);
+ int r = write(signal_self_pipe[1],&x,1);
+ if (!(r==1 || isewouldblock(errno))) abort();
+ errno = esave;
}
void init_signals(void) {