sigsend(2) sigsend(2)
NAME
sigsend, sigsendset - send a signal to a process or 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 speci-
fied 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 effec-
tive user ID of the sending process is superuser, or sig is SIGCONT
and the sending process has the same session ID as the receiving pro-
cess.
The possible values of idtype have the following effects:
PPID sig is sent to the process with process ID id.
PPPID sig is sent to the parent process and id is ignored.
PPGID sig is sent to any process with process group ID id.
PSID sig is sent to any process with session ID id.
PUID sig is sent to any process with effective user ID id.
PGID sig is sent to any process with effective group ID id.
PCID sig is sent to any process with scheduler class ID id [see
priocntl(2)].
PALL sig is sent to all processes and id is ignored.
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.
Page 1 Reliant UNIX 5.44 Printed 11/98
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;
dtypet 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 apply:
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 superuser, 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.
Page 2 Reliant UNIX 5.44 Printed 11/98
sigsend(2) sigsend(2)
In addition, sigsendset() fails if:
EFAULT psp points outside the process' allocated address space.
RESULT
On success, sigsend() returns 0. On failure, it returns -1 and sets
errno to indicate the error.
SEE ALSO
kill(1), getpgrp(2), getpid(2), kill(2), priocntl(2), setpgid(2), sig-
nal(2), signal(5).
Page 3 Reliant UNIX 5.44 Printed 11/98