psignal(9)
NAME
- psignal, pgsignal, gsignal - post signal to a process or
- process group
SYNOPSIS
#include <sys/types.h>
#include <sys/signalvar.h>
void
psignal(struct proc *p, int signum);
void
pgsignal(struct pgrp *pgrp, int signum, int checkctty);
void
gsignal(int pgid, int signum);
DESCRIPTION
- These functions post a signal to one or more processes. The
- argument
signum common to all three functions should be in the range
- [1-NSIG].
- The psignal() function posts signal number signum to the
- process represented by the process structure p. With a few exceptions
- noted below,
the target process signal disposition is updated and is
- marked as
runnable, so further handling of the signal is done in the
- context of the
target process after a context switch. Note that psignal()
- does not by
itself cause a context switch to happen.
- The target process is not marked as runnable in the follow
- ing cases:
+o The target process is sleeping uninterruptibly.
- The signal
will be noticed when the process returns from the
system call
or trap.
- +o The target process is currently ignoring the sig
- nal.
- +o If a stop signal is sent to a sleeping process
- that takes the
stopped without awakening it.
- +o SIGCONT restarts a stopped process (or puts them
- back to sleep)
regardless of the signal action (e.g., blocked or
ignored).
- If the target process is being traced psignal() behaves as
- if the target
process were taking the default action for signum. This al
- lows the tracing process to be notified of the signal.
- The pgsignal() function posts signal number signum to each
- member of the
process group described by pgrp. If checkctty is non-zero,
- the signal
will be posted only to processes that have a controlling
- terminal.
pgsignal() is implemented by walking along the process list
- headed by the
field pg_members of the process group structure pointed at
- by pgrp and
calling psignal() as appropriate. If pgrp is NULL no action
- is taken.
- The gsignal() function posts signal number signum to each
- member of the
process group identified by the group id pgid. gsignal()
- first finds the
group structure associated with pgid, then invokes
- pgsignal() with the
argument checkctty set to zero. If pgid is zero no action
- is taken.
SEE ALSO
- sigaction(2), signal(9), tsleep(9)
- BSD June 22, 1996