sigsend(2) sigsend(2)
NAME
sigsend, sigsendset - send a signal to a process or a group of
processes
SYNOPSIS
#include <sys/types.h>
#include <signal.h>
#include <sys/procset.h>
int sigsend(idtype_t idtype, id_t id, int sig);
int sigsendset(const procset_t *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.
In order to send the signal to the target process (pid), the
sending process must have permission to do so, subject to the
following ownership restrictions:
The real or effective user ID of the sending process
must match the real or saved [from exec(2)] user ID of
the receiving process, unless the sending process has
the P_OWNER privilege, or sig is SIGCONT and the sending
process has the same session ID as the receiving
process.
If idtype is P_PID, sig is sent to the process with process ID
id.
If idtype is P_PGID, sig is sent to any process with process
group ID id.
If idtype is P_SID, sig is sent to any process with session ID
id.
If idtype is P_UID, sig is sent to any process with effective
user ID id.
If idtype is P_GID, sig is sent to any process with effective
group ID id.
Copyright 1994 Novell, Inc. Page 1
sigsend(2) sigsend(2)
If idtype is P_CID, sig is sent to any process with scheduler
class ID id [see priocntl(2)].
If idtype is P_ALL, sig is sent to all processes and id is
ignored.
If id is P_MYID, 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 P_PID.
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 procset_t, defined in sys/procset.h, which
includes the following members:
idop_t p_op;
idtype_t p_lidtype;
id_t p_lid;
idtype_t p_ridtype;
id_t p_rid;
p_lidtype and p_lid specify the ID type and ID of one
(``left'') set of processes; p_ridtype and p_rid 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. p_op 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 p_op and the processes they specify are:
POP_DIFF set difference: processes in left set and not in
right set
POP_AND set intersection: processes in both left and right
sets
POP_OR set union: processes in either left or right set
or both
POP_XOR set exclusive-or: processes in left or right set
but not in both
Copyright 1994 Novell, Inc. Page 2
sigsend(2) sigsend(2)
Return Values
On success, sigsend and sigsendset return 0. On failure,
sigsend and sigsendset return -1 and set errno to identify the
error.
Errors
In the following conditions, sigsend and sigsendset fail and
set errno to:
EINVAL sig is not a valid signal number.
EINVAL idtype is not a valid idtype field.
EPERM sig is SIGKILL, idtype is P_PID and id is 1
(proc1).
EPERM The calling process does not have the P_OWNER
privilege, the real or effective user ID of the
sending process 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.
ESRCH No process can be found corresponding to that
specified by id and idtype.
In addition, sigsendset fails if:
EFAULT psp points outside the process's allocated address
space.
REFERENCES
getpid(2), kill(1), kill(2), priocntl(2), signal(2), signal(5)
NOTICES
Considerations for Threads Programming
Signals can be posted from one process to the designated
processes via the sigsend system call but not to specific
threads within those processes. See signal(5) for further
details. See thr_kill(3thread) for details of intra-process
signaling between threads.
Copyright 1994 Novell, Inc. Page 3