home *** CD-ROM | disk | FTP | other *** search
- Submitted-by: trt@cs.duke.edu (Tom Truscott)
-
- (This article is largely AIX-specific.)
-
- BSD 4.2 added restart support for system calls to avoid the problem
- you describe. You can avoid the EINTR behavior in *your* programs by
- linking your AIX programs with "-lbsd" to get the BSD flavor of signal().
-
- For fine grained control of this, see the SA_RESTART bit in "man sigaction".
- That is the POSIX way, I think.
-
- You can also use the BSD-style sigvec() but only if you link -lbsd (?!).
- Also do "man siginterrupt" for yet another way to get finer grained control.
- And "grep restart /usr/lpp/bos/*".
-
- Unfortunately, for some plausible-sounding but bogus reason AIX uses
- SV_INTERRUPT behavior by default. To demonstrate the problem, do the
- following:
-
- tar cf - /usr/lpp/info | dd of=/dev/null &
-
- Then type ^Z and fg repeatedly until dd fails with an error message.
- If this had been an important pipeline, you would now be SOL.
- Please report this as a bug via aixserv, and also point out
- the documentation error in "man siginterrupt" -- it restarts *system calls*
- not "subroutines"!
-
-
- Volume-Number: Volume 30, Number 80
-
-