Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sigsendset(2) — UnixWare 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

getpid(2)

kill(1)

kill(2)

priocntl(2)

signal(2)

signal(5)






       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








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