unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-4.1.3)
Page:
Section:
Apropos / Subsearch:
optional field

SIGINTERRUPT(3V)                                              SIGINTERRUPT(3V)



NAME
       siginterrupt - allow signals to interrupt system calls

SYNOPSIS
       int siginterrupt(sig, flag)
       int sig, flag;

DESCRIPTION
       siginterrupt()  is used to change the system call restart behavior when
       a system call is interrupted by the specified signal.  If the  flag  is
       false  (0), then system calls will be restarted if they are interrupted
       by the specified signal and no data has been transferred  yet.   System
       call restart is the default behavior on 4.2BSD, and on SunOS in the 4.2
       environment, when the signal (3V) routine is used.

       If the flag is true (1), then restarting of system calls  is  disabled.
       If a system call is interrupted by the specified signal and no data has
       been transferred, the system call will return  -1  with  errno  set  to
       EINTR.   Interrupted  system  calls that have started transferring data
       will return the amount  of  data  actually  transferred.   System  call
       interrupt  is  the  signal  behavior found on older version of the UNIX
       operating systems, such as 4.1BSD and System V UNIX.  It is the default
       behavior on SunOS in the System V environment when the signal() routine
       is used; therefore, this routine is useful in that environment only  if
       a  signal  that a sigvec(2) specified should restart system calls is to
       be changed not to restart them.

       Note: the new 4.2BSD signal handling semantics are not altered  in  any
       other way.  Most notably, signal handlers always remain installed until
       explicitly changed by a subsequent sigvec() call, and the  signal  mask
       operates  as  documented  in  sigvec(), unless the SV_RESETHAND bit has
       been used to specify that the pre-4.2BSD signal behavior is to be used.
       Programs  may  switch between restartable and interruptible system call
       operation as often as desired in the execution of a program.

       Issuing a siginterrupt() call during the execution of a signal  handler
       will  cause  the  new  action  to  take  place on the next signal to be
       caught.

NOTES
       This library routine uses an extension of  the  sigvec(2)  system  call
       that  is  not available in 4.2BSD, hence it should not be used if back-
       ward compatibility is needed.

RETURN VALUES
       siginterrupt() returns:

       0      on success.

       -1     if an invalid signal number was supplied.

SEE ALSO
       sigblock(2), sigpause(2V), sigsetmask(2), sigvec(2), signal(3V)



                                21 January 1990               SIGINTERRUPT(3V)