7 static struct sigaction oldChildHandlerData
;
9 void theHandler(int arg
)
11 printf("handled %s\n", arg
== SIGCHLD
? "SIGCHLD" : "?!unexpected signal?!" );
17 act
.sa_handler
=theHandler
;
18 sigemptyset(&(act
.sa_mask
));
19 sigaddset(&(act
.sa_mask
), SIGCHLD
);
20 // Make sure we don't block this signal. gdb tends to do that :-(
21 sigprocmask(SIG_UNBLOCK
, &(act
.sa_mask
), 0);
23 act
.sa_flags
= SA_NOCLDSTOP
;
25 // CC: take care of SunOS which automatically restarts interrupted system
26 // calls (and thus does not have SA_RESTART)
29 act
.sa_flags
|= SA_RESTART
;
32 sigaction( SIGCHLD
, &act
, &oldChildHandlerData
);
34 act
.sa_handler
=SIG_IGN
;
35 sigemptyset(&(act
.sa_mask
));
36 sigaddset(&(act
.sa_mask
), SIGPIPE
);
38 sigaction( SIGPIPE
, &act
, 0L);
45 FILE *p
= popen("echo Hallo World", "r");
47 int n
= fread(buffer
, 200, 1, p
);
48 __attribute__((unused
)) ssize_t nw
= write(2, buffer
, n
);