Unformatted text preview: restarted automatically after they are interrupted by the delivery of a signal. Instead they return prematurely to the calling application with an error condition, unlike Linux systems, which restart interrupted system calls automatically. In order to write portable signal handling code, we must allow for the possibility that system calls will return prematurely and then restart them manually when this occurs. Figure 8.30 shows the modiﬁcation to signal1 that manually restarts aborted read calls. The EINTR return code in errno indicates that the read system call returned prematurely after it was interrupted. When we run our new signal3 program on a Solaris system, the program runs correctly:
solaris> ./signal3 Hello from child 19571 Hello from child 19572 Hello from child 19573 Handler reaped child 19571 Handler reaped child 19572 Handler reaped child 19573 <cr> Parent processing input 8.5.5 Portable Signal Handling
The differences in signal handling semantics from system to system — such as whether or not an interrupted slow system call is restarted or aborted prematurely —...
View Full Document