diff options
| author | Michael Kerrisk <mtk.manpages@gmail.com> | 2011-09-18 05:47:58 +0200 |
|---|---|---|
| committer | Michael Kerrisk <mtk.manpages@gmail.com> | 2011-09-18 06:58:46 +0200 |
| commit | ae88a0d6b1d2b53744ab2af955d0578f6f51809b (patch) | |
| tree | b98da86044c61a474886ccc72c7a4754157edf63 /man3 | |
| parent | b203e4d5824149bec877e7f7bc49d8a563742d02 (diff) | |
| download | man-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.3 | 152 |
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) |
