sigsend(2) sigsend(2)
NAME
sigsend, sigsendset - send a signal to a process or a group of
processes
SYNOPSIS
#include <sys/types.h>
#include <sys/signal.h>
#include <sys/procset.h>
int sigsend(idtypet idtype, idt id, int sig);
int sigsendset(procsett *psp, int sig);
DESCRIPTION
sigsend sends a signal to the process or group of processes specified
by id and idtype. The signal to be sent is specified by sig and is
either zero or one of the values listed in signal(5). If sig is zero
(the null signal), error checking is performed but no signal is
actually sent. This value can be used to check the validity of id
and idtype.
The real or effective user ID of the sending process must match the
real or effective user ID of the receiving process, unless the
effective user ID of the sending process is super-user, or sig is
SIGCONT and the sending process has the same session ID as the
receiving process.
If idtype is PPID, sig is sent to the process with process ID id.
If idtype is PPGID, sig is sent to any process with process group ID
id.
If idtype is PSID, sig is sent to any process with session ID id.
If idtype is PUID, sig is sent to any process with effective user ID
id.
If idtype is PGID, sig is sent to any process with effective group
ID id.
If idtype is PCID, sig is sent to any process with scheduler class
ID id [see priocntl(2)].
If idtype is PALL, sig is sent to all processes and id is ignored.
If id is PMYID, the value of id is taken from the calling process.
The process with a process ID of 0 is always excluded. The process
with a process ID of 1 is excluded unless idtype is equal to PPID.
8/91 Page 1
sigsend(2) sigsend(2)
sigsendset provides an alternate interface for sending signals to
sets of processes. This function sends signals to the set of
processes specified by psp. psp is a pointer to a structure of type
procsett, defined in sys/procset.h>, which includes the following
members:
idopt pop;
idtypet plidtype;
idt plid;
idtypet pridtype;
idt prid;
plidtype and plid specify the ID type and ID of one (``left'') set
of processes; pridtype and prid specify the ID type and ID of a
second (``right'') set of processes. ID types and IDs are specified
just as for the idtype and id arguments to sigsend. pop specifies
the operation to be performed on the two sets of processes to get the
set of processes the system call is to apply to. The valid values
for pop and the processes they specify are:
POPDIFF set difference: processes in left set and not in right
set
POPAND set intersection: processes in both left and right sets
POPOR set union: processes in either left or right set or
both
POPXOR set exclusive-or: processes in left or right set but
not in both
sigsend and sigsendset fail if one or more of the following are true:
EINVAL sig is not a valid signal number.
EINVAL idtype is not a valid idtype field.
EINVAL sig is SIGKILL, idtype is PPID and id is 1 (proc1).
ESRCH No process can be found corresponding to that
specified by id and idtype.
EPERM The user ID of the sending process is not super-user,
and its real or effective user ID does not match the
real or effective user ID of the receiving process,
and the calling process is not sending SIGCONT to a
process that shares the same session.
In addition, sigsendset fails if:
Page 2 8/91
sigsend(2) sigsend(2)
EFAULT psp points outside the process's allocated address
space.
SEE ALSO
getpid(2), getpgrp(2), kill(2), priocntl(2), setpid(2), signal(2),
signal(5).
kill(1) in the User's Reference Manual.
DIAGNOSTICS
On success, sigsend returns zero. On failure, it returns -1 and sets
errno to indicate the error.
8/91 Page 3