aboutsummaryrefslogtreecommitdiffstats
path: root/man3
diff options
context:
space:
mode:
authorMichael Kerrisk <mtk.manpages@gmail.com>2011-09-18 05:47:58 +0200
committerMichael Kerrisk <mtk.manpages@gmail.com>2011-09-18 06:58:46 +0200
commitae88a0d6b1d2b53744ab2af955d0578f6f51809b (patch)
treeb98da86044c61a474886ccc72c7a4754157edf63 /man3
parentb203e4d5824149bec877e7f7bc49d8a563742d02 (diff)
downloadman-pages-ae88a0d6b1d2b53744ab2af955d0578f6f51809b.tar.gz
sigqueue.3: Move this page to section 3
Now that the underlying system call rt_sigqueueinfo(2) is properly documented, move sigqueue() to Section 3, since it is really a library function. Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
Diffstat (limited to 'man3')
-rw-r--r--man3/sigqueue.3152
1 files changed, 152 insertions, 0 deletions
diff --git a/man3/sigqueue.3 b/man3/sigqueue.3
new file mode 100644
index 0000000000..6cfa64673e
--- /dev/null
+++ b/man3/sigqueue.3
@@ -0,0 +1,152 @@
+.\" Copyright (c) 2002 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" added note on self-signaling, aeb, 2002-06-07
+.\" added note on CAP_KILL, mtk, 2004-06-16
+.\"
+.TH SIGQUEUE 2 2007-07-26 "Linux" "Linux Programmer's Manual"
+.SH NAME
+sigqueue, rt_sigqueueinfo \- queue a signal and data to a process
+.SH SYNOPSIS
+.B #include <signal.h>
+.sp
+.BI "int sigqueue(pid_t " pid ", int " sig ", const union sigval " value );
+.sp
+.in -4n
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.in
+.sp
+.BR sigqueue ():
+_POSIX_C_SOURCE\ >=\ 199309L
+.SH DESCRIPTION
+.BR sigqueue ()
+sends the signal specified in
+.I sig
+to the process whose PID is given in
+.IR pid .
+The permissions required to send a signal are the same as for
+.BR kill (2).
+As with
+.BR kill (2),
+the null signal (0) can be used to check if a process with a given
+PID exists.
+.PP
+The
+.I value
+argument is used to specify an accompanying item of data (either an integer
+or a pointer value) to be sent with the signal, and has the following type:
+.sp
+.in +4n
+.nf
+union sigval {
+ int sival_int;
+ void *sival_ptr;
+};
+.fi
+.in
+
+If the receiving process has installed a handler for this signal using the
+.B SA_SIGINFO
+flag to
+.BR sigaction (2),
+then it can obtain this data via the
+.I si_value
+field of the
+.I siginfo_t
+structure passed as the second argument to the handler.
+Furthermore, the
+.I si_code
+field of that structure will be set to
+.BR SI_QUEUE .
+.SH "RETURN VALUE"
+On success,
+.BR sigqueue ()
+returns 0, indicating that the signal was successfully
+queued to the receiving process.
+Otherwise \-1 is returned and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EAGAIN
+The limit of signals which may be queued has been reached.
+(See
+.BR signal (7)
+for further information.)
+.TP
+.B EINVAL
+.I sig
+was invalid.
+.TP
+.B EPERM
+The process does not have permission to send the signal
+to the receiving process.
+For the required permissions, see
+.BR kill (2).
+.TP
+.B ESRCH
+No process has a PID matching
+.IR pid .
+.SH VERSIONS
+This system call first appeared in Linux 2.2.
+.SH "CONFORMING TO"
+POSIX.1-2001.
+.SH NOTES
+If this function results in the sending of a signal to the process
+that invoked it, and that signal was not blocked by the calling thread,
+and no other threads were willing to handle this signal (either by
+having it unblocked, or by waiting for it using
+.BR sigwait (3)),
+then at least some signal must be delivered to this thread before this
+function returns.
+
+On Linux, the underlying system call is actually named
+.BR rt_sigqueueinfo (),
+and differs in its third argument, which is the
+.I siginfo_t
+structure that will be supplied to the receiving process's
+signal handler or returned by the receiving process's
+.BR sigtimedwait (2)
+call.
+Inside the glibc
+.BR sigqueue ()
+wrapper, this argument,
+.IR info ,
+is initialized as follows:
+.in +4n
+.nf
+
+info.si_signo = sig; /* argument supplied to sigqueue() */
+info.si_code = SI_QUEUE;
+info.si_pid = getpid(); /* Process ID of sender */
+info.si_uid = getuid(); /* Real UID of sender */
+info.si_value = val; /* argument supplied to sigqueue() */
+.fi
+.in
+.SH "SEE ALSO"
+.BR kill (2),
+.BR sigaction (2),
+.BR signal (2),
+.BR pthread_sigqueue (3),
+.BR sigwait (3),
+.BR signal (7)