Annotation of researchv10dc/man/manb/sigsys.2j, revision 1.1

1.1     ! root        1: .TH SIGSYS 2J
        !             2: .UC 4
        !             3: .ie t .ds d \(dg
        !             4: .el .ds d \z'|+'
        !             5: .ie t .ds b \(bu
        !             6: .el .ds b @
        !             7: .SH NAME
        !             8: sigsys \- catch or ignore signals
        !             9: .SH SYNOPSIS
        !            10: .nf
        !            11: .B #include <signal.h>
        !            12: .PP
        !            13: .B (*sigsys(sig, func))()
        !            14: .B void (*func)();
        !            15: .PP
        !            16: .B cc ... \-ljobs
        !            17: .fi
        !            18: .SH DESCRIPTION
        !            19: .IR N.B. :
        !            20: The system currently supports two signal implementations.
        !            21: The one described in
        !            22: .IR signal (2)
        !            23: is standard in version 7 UNIX systems,
        !            24: and retained for backward compatibility
        !            25: as it is different
        !            26: in a number of ways.
        !            27: The one described here (with the interface in
        !            28: .IR sigset (3))
        !            29: provides for the needs of the job control mechanisms (see
        !            30: .IR jobs (3))
        !            31: used by
        !            32: .IR csh (1),
        !            33: and corrects the bugs in the standard implementation of signals,
        !            34: allowing programs which process interrupts to be written reliably.
        !            35: .PP
        !            36: The routine
        !            37: .I sigsys
        !            38: is not normally called directly; rather the routines of
        !            39: .IR sigset (3)
        !            40: should be used.
        !            41: These routines are kept in the ``jobs'' library, accessible by
        !            42: giving the loader option
        !            43: .B \-ljobs.
        !            44: The features described here are less portable then those of
        !            45: .IR signal (2)
        !            46: and should not be used in programs which are
        !            47: to be moved to other versions of UNIX.
        !            48: .PP
        !            49: A signal
        !            50: is generated by some abnormal event,
        !            51: initiated by a user at a terminal (quit, interrupt, stop),
        !            52: by a program error (bus error, etc.),
        !            53: by request of another program (kill),
        !            54: or when a process is stopped because it wishes to access
        !            55: its control terminal while in the background (see
        !            56: .IR tty (4)).
        !            57: Signals are optionally generated
        !            58: when a process resumes after being stopped,
        !            59: when the status of child processes changes,
        !            60: or when input is ready at the control terminal.
        !            61: Most signals cause termination of the receiving process if no action
        !            62: is taken; some signals instead cause the process receiving them
        !            63: to be stopped, or are simply discarded if the process has not
        !            64: requested otherwise.
        !            65: Except for the SIGKILL and SIGSTOP
        !            66: signals which cannot be blocked, the
        !            67: .I sigsys
        !            68: call allows signals either to be ignored,
        !            69: held until a later time (protecting critical sections in the process),
        !            70: or to cause an interrupt to a specified location.
        !            71: Here is the list of all signals with names as in the include file.
        !            72: .LP
        !            73: .nf
        !            74: .ta \w'SIGMMMM 'u +\w'15*  'u
        !            75: SIGHUP 1       hangup
        !            76: SIGINT 2       interrupt
        !            77: SIGQUIT        3*      quit
        !            78: SIGILL 4*      illegal instruction (not reset when caught)
        !            79: SIGTRAP        5*      trace trap (not reset when caught)
        !            80: SIGIOT 6*      IOT instruction
        !            81: SIGEMT 7*      EMT instruction
        !            82: SIGFPE 8*      floating point exception
        !            83: SIGKILL        9       kill (cannot be caught, held or ignored)
        !            84: SIGBUS 10*     bus error
        !            85: SIGSEGV        11*     segmentation violation
        !            86: SIGSYS 12*     bad argument to system call
        !            87: SIGPIPE        13      write on a pipe with no one to read it
        !            88: SIGALRM        14      alarm clock
        !            89: SIGTERM        15      software termination signal
        !            90:        16      unassigned
        !            91: SIGSTOP        17\*d   stop (cannot be caught, held or ignored)
        !            92: SIGTSTP        18\*d   stop signal generated from keyboard
        !            93: SIGCONT        19\*b   continue after stop
        !            94: SIGCHLD        20\*b   child status has changed
        !            95: SIGTTIN        21\*d   background read attempted from control terminal
        !            96: SIGTTOU        22\*d   background write attempted to control terminal
        !            97: SIGTINT        23\*b   input record is available at control terminal
        !            98: SIGXCPU        24      cpu time limit exceeded (see \fIvlimit\fR(2))
        !            99: SIGXFSZ        25      file size limit exceeded (see \fIvlimit\fR(2))
        !           100: .fi
        !           101: .PP
        !           102: The starred signals in the list above cause a core image
        !           103: if not caught, held or ignored.
        !           104: .PP
        !           105: If
        !           106: .I func
        !           107: is SIG_DFL, the default action
        !           108: for signal
        !           109: .I sig
        !           110: is reinstated; this default is termination
        !           111: (with a core image for starred signals)
        !           112: except for signals marked with \*b or \*d.
        !           113: Signals marked with \*b are discarded if the action is SIG_DFL; signals marked
        !           114: with \*d cause the process to stop.
        !           115: If
        !           116: .I func
        !           117: is SIG_HOLD
        !           118: the signal is remembered if it occurs, but not presented to the process;
        !           119: it may be presented later if the process changes the action for the signal.
        !           120: If
        !           121: .I func
        !           122: is SIG_IGN the signal is subsequently ignored,
        !           123: and pending instances of the signal are discarded (i.e. if the
        !           124: action was previously SIG_HOLD.)
        !           125: Otherwise
        !           126: when the signal occurs
        !           127: .I func
        !           128: will be called.
        !           129: .PP
        !           130: A return from the function will
        !           131: continue the process at the point it was interrupted.
        !           132: Except as indicated,
        !           133: a signal, set with
        !           134: .I sigsys,
        !           135: is reset to SIG_DFL after being caught.  However by
        !           136: specifying DEFERSIG(func) as the last argument to
        !           137: .I sigsys,
        !           138: one causes the action to be set to
        !           139: SIG_HOLD before the interrupt is taken, so that recursive instances
        !           140: of the signal cannot occur during handling of the signal.
        !           141: .PP
        !           142: When a caught signal occurs
        !           143: during certain system calls, the call terminates prematurely.
        !           144: In particular this can occur
        !           145: during a
        !           146: .I read
        !           147: or
        !           148: .IR write (2)
        !           149: on a slow device (like a terminal; but not a file)
        !           150: and during a
        !           151: .I pause
        !           152: or
        !           153: .IR wait (2).
        !           154: When a signal occurs
        !           155: during one of these calls,
        !           156: the saved user status
        !           157: is arranged in such a way that,
        !           158: when return from the
        !           159: signal-catching takes place, it will appear that the
        !           160: system call returned an error status.
        !           161: The user's program may then, if it wishes,
        !           162: re-execute the call.
        !           163: .I Read
        !           164: and
        !           165: .I write
        !           166: calls which have done no I/O,
        !           167: .IR ioctl s
        !           168: blocked with SIGTTOU,
        !           169: and
        !           170: .I wait3
        !           171: calls are restarted.
        !           172: .PP
        !           173: The value of
        !           174: .I sigsys
        !           175: is the previous (or initial)
        !           176: value of
        !           177: .I func
        !           178: for the particular signal.
        !           179: .PP
        !           180: The system provides two other functions by oring bits into the
        !           181: signal number:
        !           182: SIGDOPAUSE causes the process to
        !           183: .I pause
        !           184: after changing the signal action.  It can be used to atomically
        !           185: re-enable a held signal which was being processed and wait for
        !           186: another instance of the signal.
        !           187: SIGDORTI causes the system to simulate an
        !           188: .I rei
        !           189: instruction
        !           190: clearing the mark the system placed on the stack at the point of
        !           191: interrupt before checking for further signals to be presented due
        !           192: to the specified change in signal actions.  This allows a
        !           193: signal package such as
        !           194: .IR sigset (3)
        !           195: to dismiss from interrupts cleanly removing the old state from
        !           196: the stack before another instance of the interrupt is presented.
        !           197: .PP
        !           198: After a
        !           199: .IR fork (2)
        !           200: or
        !           201: .IR vfork (2)
        !           202: the child inherits
        !           203: all signals.
        !           204: .IR  Exec (2)
        !           205: resets all
        !           206: caught signals to default action; held signals remain held
        !           207: and ignored signals remain ignored.
        !           208: .SH "SEE ALSO"
        !           209: kill(1),
        !           210: ptrace(2), kill(2),
        !           211: jobs(3), sigset(3), setjmp(3),
        !           212: tty(4)
        !           213: .SH DIAGNOSTICS
        !           214: The value BADSIG is returned if the
        !           215: given signal is out of range.
        !           216: .SH BUGS
        !           217: The job control facilities are not available in standard version 7 UNIX.
        !           218: These facilities are still under development and may change in future
        !           219: releases of the system as better inter-process communication facilities
        !           220: and support for virtual terminals become available.  The options and
        !           221: specifications of this facility and the system calls supporting it
        !           222: are thus subject to change.
        !           223: .PP
        !           224: Since only one signal action can be changed at a time, it is not
        !           225: possible to get the effect of SIGDOPAUSE for more than one signal
        !           226: at a time.
        !           227: .PP
        !           228: The traps (listed below) should be distinguishable by extra arguments
        !           229: to the signal handler, and all hardware supplied parameters should
        !           230: be made available to the signal routine.
        !           231: .SH "ASSEMBLER (PDP-11)"
        !           232: (signal = 48.)
        !           233: .br
        !           234: .B sys  signal; sig; label
        !           235: .br
        !           236: (old label in r0)
        !           237: .PP
        !           238: If
        !           239: .I label
        !           240: is 0,
        !           241: default action is reinstated.
        !           242: If
        !           243: .I label
        !           244: is 1, the signal is ignored.
        !           245: If
        !           246: .I label
        !           247: is 3, the signal is held.
        !           248: Any other even
        !           249: .I label
        !           250: specifies an address in the process
        !           251: where an interrupt is simulated.
        !           252: If label is otherwise odd, the signal is sent to the function
        !           253: whose address is the label with the low bit cleared
        !           254: with the action set to SIG_HOLD.
        !           255: (Thus DEFERSIG is indicated by the low bit of a signal catch address.
        !           256: An RTI or RTT instruction will return from the
        !           257: interrupt.)
        !           258: .SH "NOTES (VAX-11)"
        !           259: The following defines the mapping of hardware traps to signals:
        !           260: .LP
        !           261: .ta \w'     Floating/decimal divide by zero   'u +\w'15*  'u +8n
        !           262: .nf
        !           263: Arithmetic traps:
        !           264:    Integer overflow    SIGFPE
        !           265:    Integer division by zero    SIGFPE
        !           266:    Floating overflow   SIGFPE
        !           267:    Floating underflow  SIGFPE
        !           268:    Floating/decimal division by zero   SIGFPE
        !           269:    Decimal overflow    SIGFPE
        !           270:    Subscript-range     SIGFPE
        !           271: Length access control  SIGSEGV
        !           272: Protection violation   SIGBUS
        !           273: Reserved instruction   SIGILL
        !           274: Customer-reserved instr.       SIGEMT
        !           275: Reserved operand       SIGILL
        !           276: Reserved addressing    SIGILL
        !           277: Trace pending  SIGTRAP
        !           278: Bpt instruction        SIGTRAP
        !           279: Compatibility-mode     SIGEMT
        !           280: Chme   SIGILL
        !           281: Chms   SIGILL
        !           282: Chmu   SIGILL
        !           283: .fi

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.