Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

kill(2)

pause(2)

ptrace(2)

setcompat(2)

sigvec(2)

wait(2)

set42sig(3)

setjmp(3C)

kill(1)




signal(3) signal(3)
NAME signal - specifies what to do upon receipt of a signal SYNOPSIS #include <signal.h> int(*signal(sig, func))() int sig; void (*func)(); DESCRIPTION signal allows the calling process to choose one of three ways in which it is possible to handle the receipt of a specific signal. sig specifies the signal and func specifies the choice. sig can be assigned any one of the following except SIGKILL: SIGHUP 1 hangup SIGINT 2 interrupt SIGQUIT 3* quit SIGILL 4* illegal instruction SIGTRAP 5* trace trap SIGIOT 6* IOT instruction SIGEMT 7* EMT instruction SIGFPE 8* floating point exception SIGKILL 9 kill (cannot be caught, blocked, or ignored) SIGBUS 10* bus error SIGSEGV 11* segmentation violation SIGSYS 12* bad argument to system call SIGPIPE 13 write on a pipe with no one to read it SIGALRM 14 alarm clock SIGTERM 15 software termination signal SIGUSR1 16 user defined signal 1 SIGUSR2 17 user defined signal 2 SIGCLD 18@ child status has changed SIGPWR 19 power-fail restart SIGTSTP 20† stop signal generated from keyboard SIGTTIN 21† background read attempted from control terminal SIGTTOU 22† background write attempted to control terminal SIGSTOP 23† stop (cannot be caught, blocked, or ignored) SIGXCPU 24 cpu time limit exceeded SIGXFSZ 25 file size limit exceeded SIGVTALRM 26 virtual time alarm (see setitimer(2)) SIGPROF 27 profiling timer alarm (see setitimer(2)) SIGWINCH 28@ window size change SIGCONT 29@ continue after stop (cannot be blocked) SIGURG 30@ urgent condition present on socket SIGIO 31@ I/O is possible on a descriptor (see fcntl(2)) The starred signals in the above list cause a core image if not caught or ignored (see below). January 1992 1



signal(3) signal(3)
Signals marked with @ are discarded if the action is SIG_DFL; signals marked with † cause the process to stop if the process is part of 4.2 job control. func is assigned one of three values: SIG_DFL, SIG_IGN, or a function-address. The actions prescribed by these values are as follows: SIG_DFL - terminate process upon receipt of a signal Upon receipt of the signal sig, the receiving process is to be terminated with the following consequences: All of the receiving process's open file descriptors will be closed. If the parent process of the receiving process is executing a wait, it will be notified of the termination of the receiving process and the terminating signal's number will be made available to the parent process; see wait(2). If the parent process of the receiving process is not executing a wait, the receiving process will be transformed into a zombie process (see exit(2) for definition of zombie process). The parent process ID of each of the receiving process's existing child processes and zombie processes will be set to 1. This means the initialization process (see intro(2)) inherits each of these processes. Each attached shared memory segment is detached and the value of shm_nattach in the data structure associated with its shared memory identifier is decremented by 1. For each semaphore for which the receiving process has set a semadj value (see semop(2)), that semadj value is added to the semval of the specified semaphore. If the process has a process, text, or data lock, an unlock is performed (see plock(2)). An accounting record will be written on the accounting file if the system's accounting routine is enabled; see acct(2). If the receiving process's process ID, tty group ID, and process group ID are equal, the signal SIGHUP will be sent to all of the processes that have a process group ID equal to the process group ID of the 2 January 1992



signal(3) signal(3)
receiving process. A ``core image'' will be made in the current working directory of the receiving process if sig is one for which an asterisk appears in the above list and the following conditions are met: The effective user ID and the real user ID of the receiving process are equal. An ordinary file named core exists and is writable or can be created. If the file must be created, it will have the following properties: a mode of 0666 modified by the file creation mask (see umask(2)) a file owner ID that is the same as the effective user ID of the receiving process a file group ID that is the same as the effective group ID of the receiving process SIG_IGN - ignore signal The signal sig is to be ignored. Note: The signal SIGKILL cannot be ignored. function-address - catch signal Upon receipt of the signal sig, the receiving process is to execute the signal-catching function pointed to by func. The signal number sig will be passed as the only argument to the signal-catching function. Additional arguments are passed to the signal-catching function for hardware-generated signals. Before entering the signal- catching function, the value of func for the caught signal will be set to SIG_DFL unless the signal is SIGILL, SIGTRAP, or SIGPWR. Upon return from the signal-catching function, the receiving process will resume execution at the point it was interrupted. When a signal that is to be caught occurs during a read, a write, an open, or an ioctl system call on a slow device (like a terminal; but not a file), during a pause system call, or during a wait system call that does not return immediately due to the existence of a previously stopped or zombie process, the signal-catching function will be executed and then the interrupted system call may return a -1 to the calling process with errno set to January 1992 3



signal(3) signal(3)
EINTR. This behavior is the default for 5.2 systems and it may be modified by the setcompat(2) system call. Note: The signal SIGKILL cannot be caught. A call to signal cancels a pending signal sig except for a pending SIGKILL signal. STATUS MESSAGES AND VALUES Upon successful completion, signal returns the previous value of func for the specified signal sig. Otherwise, a value of -1 is returned and errno is set to indicate the error. The signal program will fail if: EINVAL sig is an illegal signal number, including SIGKILL. WARNINGS Two other signals that behave differently than the signals described above exist in this release of the system; they are: SIGCLD 18 death of a child (reset when caught) SIGPWR 19 power fail (not reset when caught) There is no guarantee that, in future releases of the UNIX system, these signals will continue to behave as described below; they are included only for compatibility with other versions of the UNIX system. Their use in new programs is strongly discouraged. For these signals, func is assigned one of three values: SIG_DFL, SIG_IGN, or a function-address. The actions prescribed by these values are as follows: SIG_DFL - ignore signal The signal is to be ignored. SIG_IGN - ignore signal The signal is to be ignored. Also, if sig is SIGCLD, the calling process's child processes will not create zombie processes when they terminate; see exit(2). function-address - catch signal If the signal is SIGPWR, the action to be taken is the same as that described above for func equal to function-address. The same is true if the signal is SIGCLD except, that while the process is executing the signal-catching function, any received SIGCLD signals 4 January 1992



signal(3) signal(3)
will be queued and the signal-catching function will be continually reentered until the queue is empty. The SIGCLD affects two other system calls (wait(2), and exit(2)) in the following ways: wait If the func value of SIGCLD is set to SIG_IGN and a wait is executed, the wait will block until all of the calling process's child processes terminate; it will then return a value of -1 with errno set to ECHILD. exit If in the exiting process's parent process the func value of SIGCLD is set to SIG_IGN, the exiting process will not create a zombie process. When processing a pipeline, the shell makes the last process in the pipeline the parent of the proceeding processes. A process that may be piped into in this manner (and thus become the parent of other processes) should take care not to set SIGCLD to be caught. LIMITATIONS If a repeated signal arrives before the last one can be reset, there is no chance to catch it. However, see the setcompat flag COMPAT_BSDSIGNALS. The type specification of the routine and its func argument are problematical. The symbols sighnd and sigtrap are globally defined symbols used by signal and are reserved words. SEE ALSO kill(2), pause(2), ptrace(2), setcompat(2), sigvec(2), wait(2), set42sig(3), setjmp(3C) kill(1) in A/UX Command Reference January 1992 5

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026