OSDN Git Service

(split) LDP: Update POT and ja.po to LDP v3.40.
[linuxjm/LDP_man-pages.git] / po4a / signal / po / signal.pot
1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5 #
6 #, fuzzy
7 msgid ""
8 msgstr ""
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2012-05-01 04:39+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language: \n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=CHARSET\n"
17 "Content-Transfer-Encoding: 8bit\n"
18
19 #. type: TH
20 #: build/C/man3/bsd_signal.3:23
21 #, no-wrap
22 msgid "BSD_SIGNAL"
23 msgstr ""
24
25 #. type: TH
26 #: build/C/man3/bsd_signal.3:23 build/C/man2/getitimer.2:7
27 #, no-wrap
28 msgid "2009-03-15"
29 msgstr ""
30
31 #. type: TH
32 #: build/C/man3/bsd_signal.3:23 build/C/man2/eventfd.2:21 build/C/man2/getitimer.2:7 build/C/man3/gsignal.3:25 build/C/man2/kill.2:44 build/C/man2/killpg.2:40 build/C/man2/pause.2:30 build/C/man2/prctl.2:48 build/C/man3/profil.3:28 build/C/man3/psignal.3:28 build/C/man3/raise.3:27 build/C/man2/rt_sigqueueinfo.2:23 build/C/man2/sgetmask.2:24 build/C/man2/sigaction.2:45 build/C/man2/sigaltstack.2:25 build/C/man7/sigevent.7:24 build/C/man3/siginterrupt.3:29 build/C/man2/signal.2:34 build/C/man7/signal.7:44 build/C/man2/signalfd.2:19 build/C/man3/sigpause.3:23 build/C/man2/sigpending.2:27 build/C/man2/sigprocmask.2:27 build/C/man3/sigqueue.3:26 build/C/man2/sigreturn.2:27 build/C/man3/sigset.3:24 build/C/man3/sigsetops.3:29 build/C/man2/sigsuspend.2:27 build/C/man3/sigvec.3:24 build/C/man3/sigwait.3:24 build/C/man2/sigwaitinfo.2:23 build/C/man3/sysv_signal.3:23 build/C/man2/timer_create.2:29 build/C/man2/timer_delete.2:23 build/C/man2/timer_getoverrun.2:23 build/C/man2/timer_settime.2:23 build/C/man2/timerfd_create.2:20 build/C/man2/tkill.2:29 build/C/man2/wait.2:50 build/C/man2/wait4.2:34
33 #, no-wrap
34 msgid "Linux Programmer's Manual"
35 msgstr ""
36
37 #. type: SH
38 #: build/C/man3/bsd_signal.3:24 build/C/man2/eventfd.2:22 build/C/man2/getitimer.2:8 build/C/man3/gsignal.3:26 build/C/man2/kill.2:45 build/C/man2/killpg.2:41 build/C/man2/pause.2:31 build/C/man2/prctl.2:49 build/C/man3/profil.3:29 build/C/man3/psignal.3:29 build/C/man3/raise.3:28 build/C/man2/rt_sigqueueinfo.2:24 build/C/man2/sgetmask.2:25 build/C/man2/sigaction.2:46 build/C/man2/sigaltstack.2:26 build/C/man7/sigevent.7:25 build/C/man3/siginterrupt.3:30 build/C/man2/signal.2:35 build/C/man7/signal.7:45 build/C/man2/signalfd.2:20 build/C/man3/sigpause.3:24 build/C/man2/sigpending.2:28 build/C/man2/sigprocmask.2:28 build/C/man3/sigqueue.3:27 build/C/man2/sigreturn.2:28 build/C/man3/sigset.3:25 build/C/man3/sigsetops.3:30 build/C/man2/sigsuspend.2:28 build/C/man3/sigvec.3:25 build/C/man3/sigwait.3:25 build/C/man2/sigwaitinfo.2:24 build/C/man3/sysv_signal.3:24 build/C/man2/timer_create.2:30 build/C/man2/timer_delete.2:24 build/C/man2/timer_getoverrun.2:24 build/C/man2/timer_settime.2:24 build/C/man2/timerfd_create.2:21 build/C/man2/tkill.2:30 build/C/man2/wait.2:51 build/C/man2/wait4.2:35
39 #, no-wrap
40 msgid "NAME"
41 msgstr ""
42
43 #. type: Plain text
44 #: build/C/man3/bsd_signal.3:26
45 msgid "bsd_signal - signal handling with BSD semantics"
46 msgstr ""
47
48 #. type: SH
49 #: build/C/man3/bsd_signal.3:26 build/C/man2/eventfd.2:24 build/C/man2/getitimer.2:10 build/C/man3/gsignal.3:28 build/C/man2/kill.2:47 build/C/man2/killpg.2:43 build/C/man2/pause.2:33 build/C/man2/prctl.2:51 build/C/man3/profil.3:31 build/C/man3/psignal.3:31 build/C/man3/raise.3:30 build/C/man2/rt_sigqueueinfo.2:26 build/C/man2/sgetmask.2:27 build/C/man2/sigaction.2:48 build/C/man2/sigaltstack.2:28 build/C/man7/sigevent.7:27 build/C/man3/siginterrupt.3:32 build/C/man2/signal.2:37 build/C/man2/signalfd.2:22 build/C/man3/sigpause.3:26 build/C/man2/sigpending.2:30 build/C/man2/sigprocmask.2:30 build/C/man3/sigqueue.3:29 build/C/man2/sigreturn.2:30 build/C/man3/sigset.3:27 build/C/man3/sigsetops.3:33 build/C/man2/sigsuspend.2:30 build/C/man3/sigvec.3:27 build/C/man3/sigwait.3:27 build/C/man2/sigwaitinfo.2:26 build/C/man3/sysv_signal.3:26 build/C/man2/timer_create.2:32 build/C/man2/timer_delete.2:26 build/C/man2/timer_getoverrun.2:26 build/C/man2/timer_settime.2:27 build/C/man2/timerfd_create.2:24 build/C/man2/tkill.2:32 build/C/man2/wait.2:53 build/C/man2/wait4.2:37
50 #, no-wrap
51 msgid "SYNOPSIS"
52 msgstr ""
53
54 #. type: Plain text
55 #: build/C/man3/bsd_signal.3:28
56 msgid "B<#define _XOPEN_SOURCE> /* See feature_test_macros(7) */"
57 msgstr ""
58
59 #. type: Plain text
60 #: build/C/man3/bsd_signal.3:30 build/C/man2/killpg.2:45 build/C/man2/sigaltstack.2:30 build/C/man2/signal.2:39 build/C/man2/sigpending.2:32 build/C/man2/sigprocmask.2:32 build/C/man3/sigqueue.3:31 build/C/man3/sigset.3:29 build/C/man3/sigsetops.3:35 build/C/man2/sigsuspend.2:32 build/C/man3/sigvec.3:29 build/C/man3/sysv_signal.3:30
61 msgid "B<#include E<lt>signal.hE<gt>>"
62 msgstr ""
63
64 #. type: Plain text
65 #: build/C/man3/bsd_signal.3:32 build/C/man2/signal.2:41 build/C/man3/sigset.3:31 build/C/man3/sysv_signal.3:32
66 msgid "B<typedef void (*sighandler_t)(int);>"
67 msgstr ""
68
69 #. type: Plain text
70 #: build/C/man3/bsd_signal.3:34
71 msgid "B<sighandler_t bsd_signal(int >I<signum>B<, sighandler_t >I<handler>B<);>"
72 msgstr ""
73
74 #. type: SH
75 #: build/C/man3/bsd_signal.3:34 build/C/man2/eventfd.2:28 build/C/man2/getitimer.2:19 build/C/man3/gsignal.3:47 build/C/man2/kill.2:65 build/C/man2/killpg.2:59 build/C/man2/pause.2:37 build/C/man2/prctl.2:58 build/C/man3/profil.3:44 build/C/man3/psignal.3:54 build/C/man3/raise.3:36 build/C/man2/rt_sigqueueinfo.2:33 build/C/man2/sgetmask.2:31 build/C/man2/sigaction.2:65 build/C/man2/sigaltstack.2:49 build/C/man7/sigevent.7:50 build/C/man3/siginterrupt.3:53 build/C/man2/signal.2:43 build/C/man7/signal.7:47 build/C/man2/signalfd.2:26 build/C/man3/sigpause.3:34 build/C/man2/sigpending.2:44 build/C/man2/sigprocmask.2:45 build/C/man3/sigqueue.3:41 build/C/man2/sigreturn.2:32 build/C/man3/sigset.3:56 build/C/man3/sigsetops.3:61 build/C/man2/sigsuspend.2:44 build/C/man3/sigvec.3:47 build/C/man3/sigwait.3:43 build/C/man2/sigwaitinfo.2:44 build/C/man3/sysv_signal.3:34 build/C/man2/timer_create.2:50 build/C/man2/timer_delete.2:42 build/C/man2/timer_getoverrun.2:42 build/C/man2/timer_settime.2:47 build/C/man2/timerfd_create.2:36 build/C/man2/tkill.2:38 build/C/man2/wait.2:82 build/C/man2/wait4.2:68
76 #, no-wrap
77 msgid "DESCRIPTION"
78 msgstr ""
79
80 #. type: Plain text
81 #: build/C/man3/bsd_signal.3:39
82 msgid ""
83 "The B<bsd_signal>()  function takes the same arguments, and performs the "
84 "same task, as B<signal>(2)."
85 msgstr ""
86
87 #. type: Plain text
88 #: build/C/man3/bsd_signal.3:52
89 msgid ""
90 "The difference between the two is that B<bsd_signal>()  is guaranteed to "
91 "provide reliable signal semantics, that is: a) the disposition of the signal "
92 "is not reset to the default when the handler is invoked; b) delivery of "
93 "further instances of the signal is blocked while the signal handler is "
94 "executing; and c) if the handler interrupts a blocking system call, then the "
95 "system call is automatically restarted.  A portable application cannot rely "
96 "on B<signal>(2)  to provide these guarantees."
97 msgstr ""
98
99 #. type: SH
100 #: build/C/man3/bsd_signal.3:52 build/C/man2/eventfd.2:222 build/C/man2/getitimer.2:117 build/C/man2/kill.2:99 build/C/man2/killpg.2:88 build/C/man2/pause.2:42 build/C/man2/prctl.2:546 build/C/man3/profil.3:66 build/C/man3/psignal.3:87 build/C/man3/raise.3:59 build/C/man2/rt_sigqueueinfo.2:124 build/C/man2/sgetmask.2:54 build/C/man2/sigaction.2:656 build/C/man2/sigaltstack.2:131 build/C/man3/siginterrupt.3:71 build/C/man2/signal.2:95 build/C/man2/signalfd.2:248 build/C/man3/sigpause.3:46 build/C/man2/sigpending.2:51 build/C/man2/sigprocmask.2:91 build/C/man3/sigqueue.3:81 build/C/man2/sigreturn.2:51 build/C/man3/sigset.3:127 build/C/man3/sigsetops.3:105 build/C/man2/sigsuspend.2:68 build/C/man3/sigvec.3:197 build/C/man3/sigwait.3:66 build/C/man2/sigwaitinfo.2:98 build/C/man3/sysv_signal.3:49 build/C/man2/timer_create.2:165 build/C/man2/timer_delete.2:50 build/C/man2/timer_getoverrun.2:79 build/C/man2/timer_settime.2:169 build/C/man2/timerfd_create.2:286 build/C/man2/tkill.2:69 build/C/man2/wait.2:354 build/C/man2/wait4.2:127
101 #, no-wrap
102 msgid "RETURN VALUE"
103 msgstr ""
104
105 #. type: Plain text
106 #: build/C/man3/bsd_signal.3:58
107 msgid ""
108 "The B<bsd_signal>()  function returns the previous value of the signal "
109 "handler, or B<SIG_ERR> on error."
110 msgstr ""
111
112 #. type: SH
113 #: build/C/man3/bsd_signal.3:58 build/C/man2/eventfd.2:229 build/C/man2/getitimer.2:122 build/C/man2/kill.2:104 build/C/man2/killpg.2:93 build/C/man2/pause.2:53 build/C/man2/prctl.2:563 build/C/man2/rt_sigqueueinfo.2:129 build/C/man2/sgetmask.2:59 build/C/man2/sigaction.2:659 build/C/man2/sigaltstack.2:135 build/C/man3/siginterrupt.3:76 build/C/man2/signal.2:100 build/C/man2/signalfd.2:262 build/C/man2/sigpending.2:54 build/C/man2/sigprocmask.2:94 build/C/man3/sigqueue.3:89 build/C/man3/sigset.3:152 build/C/man3/sigsetops.3:121 build/C/man2/sigsuspend.2:72 build/C/man3/sigvec.3:214 build/C/man3/sigwait.3:71 build/C/man2/sigwaitinfo.2:107 build/C/man3/sysv_signal.3:55 build/C/man2/timer_create.2:173 build/C/man2/timer_delete.2:57 build/C/man2/timer_getoverrun.2:87 build/C/man2/timer_settime.2:178 build/C/man2/timerfd_create.2:301 build/C/man2/tkill.2:73 build/C/man2/wait.2:383 build/C/man2/wait4.2:130
114 #, no-wrap
115 msgid "ERRORS"
116 msgstr ""
117
118 #. type: Plain text
119 #: build/C/man3/bsd_signal.3:61 build/C/man3/sysv_signal.3:58
120 msgid "As for B<signal>(2)."
121 msgstr ""
122
123 #. type: SH
124 #: build/C/man3/bsd_signal.3:61 build/C/man2/eventfd.2:266 build/C/man2/getitimer.2:143 build/C/man3/gsignal.3:93 build/C/man2/kill.2:120 build/C/man2/killpg.2:110 build/C/man2/pause.2:57 build/C/man2/prctl.2:725 build/C/man3/profil.3:68 build/C/man3/psignal.3:97 build/C/man3/raise.3:62 build/C/man2/rt_sigqueueinfo.2:171 build/C/man2/sgetmask.2:61 build/C/man2/sigaction.2:671 build/C/man2/sigaltstack.2:154 build/C/man7/sigevent.7:128 build/C/man3/siginterrupt.3:80 build/C/man2/signal.2:105 build/C/man7/signal.7:834 build/C/man2/signalfd.2:304 build/C/man3/sigpause.3:54 build/C/man2/sigpending.2:59 build/C/man2/sigprocmask.2:107 build/C/man3/sigqueue.3:112 build/C/man2/sigreturn.2:58 build/C/man3/sigset.3:171 build/C/man3/sigsetops.3:126 build/C/man2/sigsuspend.2:80 build/C/man3/sigvec.3:219 build/C/man3/sigwait.3:77 build/C/man2/sigwaitinfo.2:126 build/C/man3/sysv_signal.3:58 build/C/man2/timer_create.2:191 build/C/man2/timer_delete.2:64 build/C/man2/timer_getoverrun.2:94 build/C/man2/timer_settime.2:203 build/C/man2/timerfd_create.2:370 build/C/man2/tkill.2:90 build/C/man2/wait.2:421 build/C/man2/wait4.2:133
125 #, no-wrap
126 msgid "CONFORMING TO"
127 msgstr ""
128
129 #. type: Plain text
130 #: build/C/man3/bsd_signal.3:68
131 msgid ""
132 "4.2BSD, POSIX.1-2001.  POSIX.1-2008 removes the specification of "
133 "B<bsd_signal>(), recommending the use of B<sigaction>(2)  instead."
134 msgstr ""
135
136 #. type: SH
137 #: build/C/man3/bsd_signal.3:68 build/C/man2/eventfd.2:271 build/C/man2/getitimer.2:153 build/C/man2/kill.2:122 build/C/man2/killpg.2:114 build/C/man3/raise.3:64 build/C/man2/rt_sigqueueinfo.2:173 build/C/man2/sgetmask.2:63 build/C/man2/sigaction.2:674 build/C/man2/sigaltstack.2:156 build/C/man2/signal.2:107 build/C/man2/signalfd.2:309 build/C/man3/sigpause.3:58 build/C/man2/sigpending.2:61 build/C/man2/sigprocmask.2:109 build/C/man3/sigqueue.3:114 build/C/man2/sigreturn.2:62 build/C/man3/sigset.3:188 build/C/man3/sigsetops.3:128 build/C/man2/sigsuspend.2:82 build/C/man3/sigvec.3:225 build/C/man3/sigwait.3:79 build/C/man2/sigwaitinfo.2:128 build/C/man3/sysv_signal.3:60 build/C/man2/timer_create.2:193 build/C/man2/timer_getoverrun.2:96 build/C/man2/tkill.2:96 build/C/man2/wait.2:423 build/C/man2/wait4.2:135
138 #, no-wrap
139 msgid "NOTES"
140 msgstr ""
141
142 #. type: Plain text
143 #: build/C/man3/bsd_signal.3:74
144 msgid "Use of B<bsd_signal>()  should be avoided; use B<sigaction>(2)  instead."
145 msgstr ""
146
147 #. type: Plain text
148 #: build/C/man3/bsd_signal.3:85
149 msgid ""
150 "On modern Linux systems, B<bsd_signal>()  and B<signal>(2)  are equivalent.  "
151 "But on older systems, B<signal>(2)  provided unreliable signal semantics; "
152 "see B<signal>(2)  for details."
153 msgstr ""
154
155 #. type: Plain text
156 #: build/C/man3/bsd_signal.3:92 build/C/man3/sysv_signal.3:85
157 msgid ""
158 "The use of I<sighandler_t> is a GNU extension; this type is only defined if "
159 "the B<_GNU_SOURCE> feature test macro is defined."
160 msgstr ""
161
162 #. type: SH
163 #: build/C/man3/bsd_signal.3:92 build/C/man2/eventfd.2:417 build/C/man2/getitimer.2:219 build/C/man3/gsignal.3:101 build/C/man2/kill.2:170 build/C/man2/killpg.2:133 build/C/man2/pause.2:59 build/C/man2/prctl.2:739 build/C/man3/profil.3:79 build/C/man3/psignal.3:111 build/C/man3/raise.3:75 build/C/man2/rt_sigqueueinfo.2:183 build/C/man2/sgetmask.2:74 build/C/man2/sigaction.2:787 build/C/man2/sigaltstack.2:230 build/C/man7/sigevent.7:130 build/C/man3/siginterrupt.3:89 build/C/man2/signal.2:259 build/C/man7/signal.7:845 build/C/man2/signalfd.2:430 build/C/man3/sigpause.3:96 build/C/man2/sigpending.2:82 build/C/man2/sigprocmask.2:139 build/C/man3/sigqueue.3:147 build/C/man2/sigreturn.2:72 build/C/man3/sigset.3:264 build/C/man3/sigsetops.3:166 build/C/man2/sigsuspend.2:104 build/C/man3/sigvec.3:250 build/C/man3/sigwait.3:86 build/C/man2/sigwaitinfo.2:179 build/C/man3/sysv_signal.3:85 build/C/man2/timer_create.2:397 build/C/man2/timer_delete.2:66 build/C/man2/timer_getoverrun.2:128 build/C/man2/timer_settime.2:208 build/C/man2/timerfd_create.2:540 build/C/man2/tkill.2:105 build/C/man2/wait.2:605 build/C/man2/wait4.2:153
164 #, no-wrap
165 msgid "SEE ALSO"
166 msgstr ""
167
168 #. type: Plain text
169 #: build/C/man3/bsd_signal.3:97
170 msgid "B<sigaction>(2), B<signal>(2), B<sysv_signal>(3), B<signal>(7)"
171 msgstr ""
172
173 #. type: SH
174 #: build/C/man3/bsd_signal.3:97 build/C/man2/eventfd.2:428 build/C/man2/getitimer.2:226 build/C/man3/gsignal.3:105 build/C/man2/kill.2:180 build/C/man2/killpg.2:139 build/C/man2/pause.2:64 build/C/man2/prctl.2:742 build/C/man3/profil.3:84 build/C/man3/psignal.3:116 build/C/man3/raise.3:82 build/C/man2/rt_sigqueueinfo.2:191 build/C/man2/sgetmask.2:77 build/C/man2/sigaction.2:806 build/C/man2/sigaltstack.2:237 build/C/man7/sigevent.7:140 build/C/man3/siginterrupt.3:91 build/C/man2/signal.2:278 build/C/man7/signal.7:878 build/C/man2/signalfd.2:443 build/C/man3/sigpause.3:104 build/C/man2/sigpending.2:90 build/C/man2/sigprocmask.2:150 build/C/man3/sigqueue.3:155 build/C/man2/sigreturn.2:77 build/C/man3/sigset.3:274 build/C/man3/sigsetops.3:171 build/C/man2/sigsuspend.2:114 build/C/man3/sigvec.3:260 build/C/man3/sigwait.3:94 build/C/man2/sigwaitinfo.2:191 build/C/man3/sysv_signal.3:90 build/C/man2/timer_create.2:410 build/C/man2/timer_delete.2:72 build/C/man2/timer_getoverrun.2:138 build/C/man2/timer_settime.2:212 build/C/man2/timerfd_create.2:552 build/C/man2/tkill.2:110 build/C/man2/wait.2:617 build/C/man2/wait4.2:160
175 #, no-wrap
176 msgid "COLOPHON"
177 msgstr ""
178
179 #. type: Plain text
180 #: build/C/man3/bsd_signal.3:104 build/C/man2/eventfd.2:435 build/C/man2/getitimer.2:233 build/C/man3/gsignal.3:112 build/C/man2/kill.2:187 build/C/man2/killpg.2:146 build/C/man2/pause.2:71 build/C/man2/prctl.2:749 build/C/man3/profil.3:91 build/C/man3/psignal.3:123 build/C/man3/raise.3:89 build/C/man2/rt_sigqueueinfo.2:198 build/C/man2/sgetmask.2:84 build/C/man2/sigaction.2:813 build/C/man2/sigaltstack.2:244 build/C/man7/sigevent.7:147 build/C/man3/siginterrupt.3:98 build/C/man2/signal.2:285 build/C/man7/signal.7:885 build/C/man2/signalfd.2:450 build/C/man3/sigpause.3:111 build/C/man2/sigpending.2:97 build/C/man2/sigprocmask.2:157 build/C/man3/sigqueue.3:162 build/C/man2/sigreturn.2:84 build/C/man3/sigset.3:281 build/C/man3/sigsetops.3:178 build/C/man2/sigsuspend.2:121 build/C/man3/sigvec.3:267 build/C/man3/sigwait.3:101 build/C/man2/sigwaitinfo.2:198 build/C/man3/sysv_signal.3:97 build/C/man2/timer_create.2:417 build/C/man2/timer_delete.2:79 build/C/man2/timer_getoverrun.2:145 build/C/man2/timer_settime.2:219 build/C/man2/timerfd_create.2:559 build/C/man2/tkill.2:117 build/C/man2/wait.2:624 build/C/man2/wait4.2:167
181 msgid ""
182 "This page is part of release 3.40 of the Linux I<man-pages> project.  A "
183 "description of the project, and information about reporting bugs, can be "
184 "found at http://www.kernel.org/doc/man-pages/."
185 msgstr ""
186
187 #. type: TH
188 #: build/C/man2/eventfd.2:21
189 #, no-wrap
190 msgid "EVENTFD"
191 msgstr ""
192
193 #. type: TH
194 #: build/C/man2/eventfd.2:21
195 #, no-wrap
196 msgid "2010-08-30"
197 msgstr ""
198
199 #. type: TH
200 #: build/C/man2/eventfd.2:21 build/C/man2/getitimer.2:7 build/C/man2/kill.2:44 build/C/man2/killpg.2:40 build/C/man2/pause.2:30 build/C/man2/prctl.2:48 build/C/man3/profil.3:28 build/C/man2/rt_sigqueueinfo.2:23 build/C/man2/sgetmask.2:24 build/C/man2/sigaction.2:45 build/C/man2/sigaltstack.2:25 build/C/man2/signal.2:34 build/C/man7/signal.7:44 build/C/man2/signalfd.2:19 build/C/man3/sigpause.3:23 build/C/man2/sigpending.2:27 build/C/man2/sigprocmask.2:27 build/C/man3/sigqueue.3:26 build/C/man2/sigreturn.2:27 build/C/man3/sigset.3:24 build/C/man3/sigsetops.3:29 build/C/man2/sigsuspend.2:27 build/C/man3/sigvec.3:24 build/C/man3/sigwait.3:24 build/C/man2/sigwaitinfo.2:23 build/C/man2/timer_create.2:29 build/C/man2/timer_delete.2:23 build/C/man2/timer_getoverrun.2:23 build/C/man2/timer_settime.2:23 build/C/man2/timerfd_create.2:20 build/C/man2/tkill.2:29 build/C/man2/wait.2:50 build/C/man2/wait4.2:34
201 #, no-wrap
202 msgid "Linux"
203 msgstr ""
204
205 #. type: Plain text
206 #: build/C/man2/eventfd.2:24
207 msgid "eventfd - create a file descriptor for event notification"
208 msgstr ""
209
210 #. type: Plain text
211 #: build/C/man2/eventfd.2:26
212 msgid "B<#include E<lt>sys/eventfd.hE<gt>>"
213 msgstr ""
214
215 #. type: Plain text
216 #: build/C/man2/eventfd.2:28
217 msgid "B<int eventfd(unsigned int >I<initval>B<, int >I<flags>B<);>"
218 msgstr ""
219
220 #. type: Plain text
221 #: build/C/man2/eventfd.2:38
222 msgid ""
223 "B<eventfd>()  creates an \"eventfd object\" that can be used as an event "
224 "wait/notify mechanism by userspace applications, and by the kernel to notify "
225 "userspace applications of events.  The object contains an unsigned 64-bit "
226 "integer (I<uint64_t>)  counter that is maintained by the kernel.  This "
227 "counter is initialized with the value specified in the argument I<initval>."
228 msgstr ""
229
230 #. type: Plain text
231 #: build/C/man2/eventfd.2:43
232 msgid ""
233 "The following values may be bitwise ORed in I<flags> to change the behaviour "
234 "of B<eventfd>():"
235 msgstr ""
236
237 #. type: TP
238 #: build/C/man2/eventfd.2:43
239 #, no-wrap
240 msgid "B<EFD_CLOEXEC> (since Linux 2.6.27)"
241 msgstr ""
242
243 #. type: Plain text
244 #: build/C/man2/eventfd.2:53 build/C/man2/signalfd.2:94 build/C/man2/timerfd_create.2:102
245 msgid ""
246 "Set the close-on-exec (B<FD_CLOEXEC>)  flag on the new file descriptor.  See "
247 "the description of the B<O_CLOEXEC> flag in B<open>(2)  for reasons why this "
248 "may be useful."
249 msgstr ""
250
251 #. type: TP
252 #: build/C/man2/eventfd.2:53
253 #, no-wrap
254 msgid "B<EFD_NONBLOCK> (since Linux 2.6.27)"
255 msgstr ""
256
257 #. type: Plain text
258 #: build/C/man2/eventfd.2:61 build/C/man2/signalfd.2:84 build/C/man2/timerfd_create.2:92
259 msgid ""
260 "Set the B<O_NONBLOCK> file status flag on the new open file description.  "
261 "Using this flag saves extra calls to B<fcntl>(2)  to achieve the same "
262 "result."
263 msgstr ""
264
265 #. type: TP
266 #: build/C/man2/eventfd.2:61
267 #, no-wrap
268 msgid "B<EFD_SEMAPHORE> (since Linux 2.6.30)"
269 msgstr ""
270
271 #. type: Plain text
272 #: build/C/man2/eventfd.2:65
273 msgid ""
274 "Provide semaphore-like semantics for reads from the new file descriptor.  "
275 "See below."
276 msgstr ""
277
278 #. type: Plain text
279 #: build/C/man2/eventfd.2:69 build/C/man2/signalfd.2:98
280 msgid ""
281 "In Linux up to version 2.6.26, the I<flags> argument is unused, and must be "
282 "specified as zero."
283 msgstr ""
284
285 #. type: Plain text
286 #: build/C/man2/eventfd.2:75
287 msgid ""
288 "As its return value, B<eventfd>()  returns a new file descriptor that can be "
289 "used to refer to the eventfd object.  The following operations can be "
290 "performed on the file descriptor:"
291 msgstr ""
292
293 #. type: TP
294 #: build/C/man2/eventfd.2:75 build/C/man2/signalfd.2:101 build/C/man2/timerfd_create.2:210
295 #, no-wrap
296 msgid "B<read>(2)"
297 msgstr ""
298
299 #. type: Plain text
300 #: build/C/man2/eventfd.2:85
301 msgid ""
302 "Each successful B<read>(2)  returns an 8-byte integer.  A B<read>(2)  will "
303 "fail with the error B<EINVAL> if the size of the supplied buffer is less "
304 "than 8 bytes."
305 msgstr ""
306
307 #. type: Plain text
308 #: build/C/man2/eventfd.2:90
309 msgid ""
310 "The value returned by B<read>(2)  is in host byte order, i.e., the native "
311 "byte order for integers on the host machine."
312 msgstr ""
313
314 #. type: Plain text
315 #: build/C/man2/eventfd.2:97
316 msgid ""
317 "The semantics of B<read>(2)  depend on whether the eventfd counter currently "
318 "has a nonzero value and whether the B<EFD_SEMAPHORE> flag was specified when "
319 "creating the eventfd file descriptor:"
320 msgstr ""
321
322 #. type: IP
323 #: build/C/man2/eventfd.2:98 build/C/man2/eventfd.2:105 build/C/man2/eventfd.2:112 build/C/man2/eventfd.2:157 build/C/man2/eventfd.2:167 build/C/man2/eventfd.2:177 build/C/man2/prctl.2:606 build/C/man2/prctl.2:611 build/C/man2/prctl.2:616 build/C/man2/prctl.2:626 build/C/man3/psignal.3:103 build/C/man3/psignal.3:107 build/C/man2/sigaction.2:294 build/C/man2/sigaction.2:309 build/C/man2/sigaction.2:325 build/C/man2/sigaction.2:340 build/C/man2/sigaction.2:387 build/C/man2/sigaction.2:423 build/C/man2/signal.2:66 build/C/man2/signal.2:71 build/C/man2/signal.2:78 build/C/man2/signal.2:205 build/C/man2/signal.2:209 build/C/man2/signal.2:248 build/C/man7/signal.7:147 build/C/man7/signal.7:155 build/C/man7/signal.7:611 build/C/man7/signal.7:613 build/C/man7/signal.7:634 build/C/man7/signal.7:649 build/C/man7/signal.7:653 build/C/man7/signal.7:660 build/C/man7/signal.7:676 build/C/man7/signal.7:682 build/C/man7/signal.7:689 build/C/man7/signal.7:694 build/C/man7/signal.7:713 build/C/man7/signal.7:732 build/C/man7/signal.7:739 build/C/man7/signal.7:748 build/C/man7/signal.7:756 build/C/man7/signal.7:762 build/C/man7/signal.7:767 build/C/man7/signal.7:787 build/C/man7/signal.7:806 build/C/man7/signal.7:809 build/C/man7/signal.7:812 build/C/man7/signal.7:815 build/C/man7/signal.7:820 build/C/man7/signal.7:826 build/C/man7/signal.7:830 build/C/man3/sigwait.3:59 build/C/man3/sigwait.3:64 build/C/man2/timer_create.2:214 build/C/man2/timer_create.2:217 build/C/man2/timer_create.2:220 build/C/man2/timer_create.2:224 build/C/man2/timer_create.2:227 build/C/man2/timer_create.2:233 build/C/man2/timer_create.2:237
324 #, no-wrap
325 msgid "*"
326 msgstr ""
327
328 #. type: Plain text
329 #: build/C/man2/eventfd.2:105
330 msgid ""
331 "If B<EFD_SEMAPHORE> was not specified and the eventfd counter has a nonzero "
332 "value, then a B<read>(2)  returns 8 bytes containing that value, and the "
333 "counter's value is reset to zero."
334 msgstr ""
335
336 #. type: Plain text
337 #: build/C/man2/eventfd.2:112
338 msgid ""
339 "If B<EFD_SEMAPHORE> was specified and the eventfd counter has a nonzero "
340 "value, then a B<read>(2)  returns 8 bytes containing the value 1, and the "
341 "counter's value is decremented by 1."
342 msgstr ""
343
344 #. type: Plain text
345 #: build/C/man2/eventfd.2:122
346 msgid ""
347 "If the eventfd counter is zero at the time of the call to B<read>(2), then "
348 "the call either blocks until the counter becomes nonzero (at which time, the "
349 "B<read>(2)  proceeds as described above)  or fails with the error B<EAGAIN> "
350 "if the file descriptor has been made nonblocking."
351 msgstr ""
352
353 #. type: TP
354 #: build/C/man2/eventfd.2:123
355 #, no-wrap
356 msgid "B<write>(2)"
357 msgstr ""
358
359 #. type: Plain text
360 #: build/C/man2/eventfd.2:140
361 msgid ""
362 "A B<write>(2)  call adds the 8-byte integer value supplied in its buffer to "
363 "the counter.  The maximum value that may be stored in the counter is the "
364 "largest unsigned 64-bit value minus 1 (i.e., 0xfffffffffffffffe).  If the "
365 "addition would cause the counter's value to exceed the maximum, then the "
366 "B<write>(2)  either blocks until a B<read>(2)  is performed on the file "
367 "descriptor, or fails with the error B<EAGAIN> if the file descriptor has "
368 "been made nonblocking."
369 msgstr ""
370
371 #. type: Plain text
372 #: build/C/man2/eventfd.2:147
373 msgid ""
374 "A B<write>(2)  will fail with the error B<EINVAL> if the size of the "
375 "supplied buffer is less than 8 bytes, or if an attempt is made to write the "
376 "value 0xffffffffffffffff."
377 msgstr ""
378
379 #. type: TP
380 #: build/C/man2/eventfd.2:147 build/C/man2/signalfd.2:139 build/C/man2/timerfd_create.2:243
381 #, no-wrap
382 msgid "B<poll>(2), B<select>(2) (and similar)"
383 msgstr ""
384
385 #. type: Plain text
386 #: build/C/man2/eventfd.2:156
387 msgid ""
388 "The returned file descriptor supports B<poll>(2)  (and analogously "
389 "B<epoll>(7))  and B<select>(2), as follows:"
390 msgstr ""
391
392 #. type: Plain text
393 #: build/C/man2/eventfd.2:167
394 msgid ""
395 "The file descriptor is readable (the B<select>(2)  I<readfds> argument; the "
396 "B<poll>(2)  B<POLLIN> flag)  if the counter has a value greater than 0."
397 msgstr ""
398
399 #. type: Plain text
400 #: build/C/man2/eventfd.2:177
401 msgid ""
402 "The file descriptor is writable (the B<select>(2)  I<writefds> argument; the "
403 "B<poll>(2)  B<POLLOUT> flag)  if it is possible to write a value of at least "
404 "\"1\" without blocking."
405 msgstr ""
406
407 #. type: Plain text
408 #: build/C/man2/eventfd.2:197
409 msgid ""
410 "If an overflow of the counter value was detected, then B<select>(2)  "
411 "indicates the file descriptor as being both readable and writable, and "
412 "B<poll>(2)  returns a B<POLLERR> event.  As noted above, B<write>(2)  can "
413 "never overflow the counter.  However an overflow can occur if 2^64 eventfd "
414 "\"signal posts\" were performed by the KAIO subsystem (theoretically "
415 "possible, but practically unlikely).  If an overflow has occurred, then "
416 "B<read>(2)  will return that maximum I<uint64_t> value (i.e., "
417 "0xffffffffffffffff)."
418 msgstr ""
419
420 #. type: Plain text
421 #: build/C/man2/eventfd.2:205
422 msgid ""
423 "The eventfd file descriptor also supports the other file-descriptor "
424 "multiplexing APIs: B<pselect>(2), B<ppoll>(2), and B<epoll>(7)."
425 msgstr ""
426
427 #. type: TP
428 #: build/C/man2/eventfd.2:205 build/C/man2/signalfd.2:159 build/C/man2/timerfd_create.2:261
429 #, no-wrap
430 msgid "B<close>(2)"
431 msgstr ""
432
433 #. type: Plain text
434 #: build/C/man2/eventfd.2:210
435 msgid ""
436 "When the file descriptor is no longer required it should be closed.  When "
437 "all file descriptors associated with the same eventfd object have been "
438 "closed, the resources for object are freed by the kernel."
439 msgstr ""
440
441 #. type: Plain text
442 #: build/C/man2/eventfd.2:222
443 msgid ""
444 "A copy of the file descriptor created by B<eventfd>()  is inherited by the "
445 "child produced by B<fork>(2).  The duplicate file descriptor is associated "
446 "with the same eventfd object.  File descriptors created by B<eventfd>()  are "
447 "preserved across B<execve>(2), unless the close-on-exec flag has been set."
448 msgstr ""
449
450 #. type: Plain text
451 #: build/C/man2/eventfd.2:229
452 msgid ""
453 "On success, B<eventfd>()  returns a new eventfd file descriptor.  On error, "
454 "-1 is returned and I<errno> is set to indicate the error."
455 msgstr ""
456
457 #. type: TP
458 #: build/C/man2/eventfd.2:230 build/C/man2/getitimer.2:130 build/C/man2/kill.2:105 build/C/man2/killpg.2:94 build/C/man2/prctl.2:568 build/C/man2/prctl.2:573 build/C/man2/prctl.2:585 build/C/man2/prctl.2:590 build/C/man2/prctl.2:599 build/C/man2/rt_sigqueueinfo.2:136 build/C/man2/sigaction.2:664 build/C/man2/sigaltstack.2:140 build/C/man3/siginterrupt.3:77 build/C/man2/signal.2:101 build/C/man2/signalfd.2:268 build/C/man2/signalfd.2:276 build/C/man2/sigprocmask.2:102 build/C/man3/sigqueue.3:96 build/C/man3/sigsetops.3:122 build/C/man3/sigwait.3:72 build/C/man2/sigwaitinfo.2:122 build/C/man2/timer_create.2:177 build/C/man2/timer_delete.2:58 build/C/man2/timer_getoverrun.2:88 build/C/man2/timer_settime.2:187 build/C/man2/timer_settime.2:195 build/C/man2/timerfd_create.2:304 build/C/man2/timerfd_create.2:312 build/C/man2/timerfd_create.2:348 build/C/man2/timerfd_create.2:355 build/C/man2/timerfd_create.2:361 build/C/man2/tkill.2:74 build/C/man2/wait.2:416
459 #, no-wrap
460 msgid "B<EINVAL>"
461 msgstr ""
462
463 #. type: Plain text
464 #: build/C/man2/eventfd.2:234
465 msgid "An unsupported value was specified in I<flags>."
466 msgstr ""
467
468 #. type: TP
469 #: build/C/man2/eventfd.2:234 build/C/man2/signalfd.2:283 build/C/man2/timerfd_create.2:319
470 #, no-wrap
471 msgid "B<EMFILE>"
472 msgstr ""
473
474 #. type: Plain text
475 #: build/C/man2/eventfd.2:237
476 msgid "The per-process limit on open file descriptors has been reached."
477 msgstr ""
478
479 #. type: TP
480 #: build/C/man2/eventfd.2:237 build/C/man2/signalfd.2:286 build/C/man2/timerfd_create.2:322
481 #, no-wrap
482 msgid "B<ENFILE>"
483 msgstr ""
484
485 #. type: Plain text
486 #: build/C/man2/eventfd.2:241 build/C/man2/signalfd.2:290 build/C/man2/timerfd_create.2:326
487 msgid "The system-wide limit on the total number of open files has been reached."
488 msgstr ""
489
490 #. type: TP
491 #: build/C/man2/eventfd.2:241 build/C/man2/signalfd.2:290 build/C/man2/timerfd_create.2:326
492 #, no-wrap
493 msgid "B<ENODEV>"
494 msgstr ""
495
496 #. type: Plain text
497 #: build/C/man2/eventfd.2:249 build/C/man2/signalfd.2:293 build/C/man2/timerfd_create.2:329
498 msgid "Could not mount (internal) anonymous inode device."
499 msgstr ""
500
501 #. type: TP
502 #: build/C/man2/eventfd.2:249 build/C/man2/sigaltstack.2:145 build/C/man2/signalfd.2:293 build/C/man2/timer_create.2:185 build/C/man2/timerfd_create.2:329
503 #, no-wrap
504 msgid "B<ENOMEM>"
505 msgstr ""
506
507 #. type: Plain text
508 #: build/C/man2/eventfd.2:253
509 msgid "There was insufficient memory to create a new eventfd file descriptor."
510 msgstr ""
511
512 #. type: SH
513 #: build/C/man2/eventfd.2:253 build/C/man2/prctl.2:720 build/C/man3/psignal.3:93 build/C/man2/rt_sigqueueinfo.2:164 build/C/man2/signalfd.2:296 build/C/man3/sigqueue.3:110 build/C/man2/timer_create.2:189 build/C/man2/timer_delete.2:62 build/C/man2/timer_getoverrun.2:92 build/C/man2/timer_settime.2:201 build/C/man2/timerfd_create.2:367 build/C/man2/tkill.2:85
514 #, no-wrap
515 msgid "VERSIONS"
516 msgstr ""
517
518 #.  eventfd() is in glibc 2.7, but reportedly does not build
519 #. type: Plain text
520 #: build/C/man2/eventfd.2:266
521 msgid ""
522 "B<eventfd>()  is available on Linux since kernel 2.6.22.  Working support is "
523 "provided in glibc since version 2.8.  The B<eventfd2>()  system call (see "
524 "NOTES) is available on Linux since kernel 2.6.27.  Since version 2.9, the "
525 "glibc B<eventfd>()  wrapper will employ the B<eventfd2>()  system call, if "
526 "it is supported by the kernel."
527 msgstr ""
528
529 #. type: Plain text
530 #: build/C/man2/eventfd.2:271
531 msgid "B<eventfd>()  and B<eventfd2>()  are Linux-specific."
532 msgstr ""
533
534 #. type: Plain text
535 #: build/C/man2/eventfd.2:279
536 msgid ""
537 "Applications can use an eventfd file descriptor instead of a pipe (see "
538 "B<pipe>(2))  in all cases where a pipe is used simply to signal events.  The "
539 "kernel overhead of an eventfd file descriptor is much lower than that of a "
540 "pipe, and only one file descriptor is required (versus the two required for "
541 "a pipe)."
542 msgstr ""
543
544 #.  or eventually syslets/threadlets
545 #. type: Plain text
546 #: build/C/man2/eventfd.2:285
547 msgid ""
548 "When used in the kernel, an eventfd file descriptor can provide a "
549 "kernel-userspace bridge allowing, for example, functionalities like KAIO "
550 "(kernel AIO)  to signal to a file descriptor that some operation is "
551 "complete."
552 msgstr ""
553
554 #. type: Plain text
555 #: build/C/man2/eventfd.2:302
556 msgid ""
557 "A key point about an eventfd file descriptor is that it can be monitored "
558 "just like any other file descriptor using B<select>(2), B<poll>(2), or "
559 "B<epoll>(7).  This means that an application can simultaneously monitor the "
560 "readiness of \"traditional\" files and the readiness of other kernel "
561 "mechanisms that support the eventfd interface.  (Without the B<eventfd>()  "
562 "interface, these mechanisms could not be multiplexed via B<select>(2), "
563 "B<poll>(2), or B<epoll>(7).)"
564 msgstr ""
565
566 #. type: SS
567 #: build/C/man2/eventfd.2:302 build/C/man2/signalfd.2:333
568 #, no-wrap
569 msgid "Underlying Linux system calls"
570 msgstr ""
571
572 #. type: Plain text
573 #: build/C/man2/eventfd.2:316
574 msgid ""
575 "There are two underlying Linux system calls: B<eventfd>()  and the more "
576 "recent B<eventfd2>().  The former system call does not implement a I<flags> "
577 "argument.  The latter system call implements the I<flags> values described "
578 "above.  The glibc wrapper function will use B<eventfd2>()  where it is "
579 "available."
580 msgstr ""
581
582 #. type: SS
583 #: build/C/man2/eventfd.2:316
584 #, no-wrap
585 msgid "Additional glibc features"
586 msgstr ""
587
588 #. type: Plain text
589 #: build/C/man2/eventfd.2:320
590 msgid ""
591 "The GNU C library defines an additional type, and two functions that attempt "
592 "to abstract some of the details of reading and writing on an eventfd file "
593 "descriptor:"
594 msgstr ""
595
596 #. type: Plain text
597 #: build/C/man2/eventfd.2:324
598 #, no-wrap
599 msgid "typedef uint64_t eventfd_t;\n"
600 msgstr ""
601
602 #. type: Plain text
603 #: build/C/man2/eventfd.2:327
604 #, no-wrap
605 msgid ""
606 "int eventfd_read(int fd, eventfd_t *value);\n"
607 "int eventfd_write(int fd, eventfd_t value);\n"
608 msgstr ""
609
610 #. type: Plain text
611 #: build/C/man2/eventfd.2:334
612 msgid ""
613 "The functions perform the read and write operations on an eventfd file "
614 "descriptor, returning 0 if the correct number of bytes was transferred, or "
615 "-1 otherwise."
616 msgstr ""
617
618 #. type: SH
619 #: build/C/man2/eventfd.2:334 build/C/man2/sigaction.2:784 build/C/man2/sigaltstack.2:213 build/C/man2/signalfd.2:357 build/C/man3/sigwait.3:83 build/C/man2/timer_create.2:251 build/C/man2/timer_getoverrun.2:125 build/C/man2/timer_settime.2:205 build/C/man2/timerfd_create.2:372 build/C/man2/wait.2:522
620 #, no-wrap
621 msgid "EXAMPLE"
622 msgstr ""
623
624 #. type: Plain text
625 #: build/C/man2/eventfd.2:343
626 msgid ""
627 "The following program creates an eventfd file descriptor and then forks to "
628 "create a child process.  While the parent briefly sleeps, the child writes "
629 "each of the integers supplied in the program's command-line arguments to the "
630 "eventfd file descriptor.  When the parent has finished sleeping, it reads "
631 "from the eventfd file descriptor."
632 msgstr ""
633
634 #. type: Plain text
635 #: build/C/man2/eventfd.2:345
636 msgid "The following shell session shows a sample run of the program:"
637 msgstr ""
638
639 #. type: Plain text
640 #: build/C/man2/eventfd.2:357
641 #, no-wrap
642 msgid ""
643 "$B< ./a.out 1 2 4 7 14>\n"
644 "Child writing 1 to efd\n"
645 "Child writing 2 to efd\n"
646 "Child writing 4 to efd\n"
647 "Child writing 7 to efd\n"
648 "Child writing 14 to efd\n"
649 "Child completed write loop\n"
650 "Parent about to read\n"
651 "Parent read 28 (0x1c) from efd\n"
652 msgstr ""
653
654 #. type: SS
655 #: build/C/man2/eventfd.2:359 build/C/man2/signalfd.2:380 build/C/man2/timerfd_create.2:400 build/C/man2/wait.2:557
656 #, no-wrap
657 msgid "Program source"
658 msgstr ""
659
660 #. type: Plain text
661 #: build/C/man2/eventfd.2:367
662 #, no-wrap
663 msgid ""
664 "#include E<lt>sys/eventfd.hE<gt>\n"
665 "#include E<lt>unistd.hE<gt>\n"
666 "#include E<lt>stdlib.hE<gt>\n"
667 "#include E<lt>stdio.hE<gt>\n"
668 "#include E<lt>stdint.hE<gt>             /* Definition of uint64_t */\n"
669 msgstr ""
670
671 #. type: Plain text
672 #: build/C/man2/eventfd.2:370 build/C/man2/signalfd.2:391
673 #, no-wrap
674 msgid ""
675 "#define handle_error(msg) \\e\n"
676 "    do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
677 msgstr ""
678
679 #. type: Plain text
680 #: build/C/man2/eventfd.2:377
681 #, no-wrap
682 msgid ""
683 "int\n"
684 "main(int argc, char *argv[])\n"
685 "{\n"
686 "    int efd, j;\n"
687 "    uint64_t u;\n"
688 "    ssize_t s;\n"
689 msgstr ""
690
691 #. type: Plain text
692 #: build/C/man2/eventfd.2:382
693 #, no-wrap
694 msgid ""
695 "    if (argc E<lt> 2) {\n"
696 "        fprintf(stderr, \"Usage: %s E<lt>numE<gt>...\\en\", argv[0]);\n"
697 "        exit(EXIT_FAILURE);\n"
698 "    }\n"
699 msgstr ""
700
701 #. type: Plain text
702 #: build/C/man2/eventfd.2:386
703 #, no-wrap
704 msgid ""
705 "    efd = eventfd(0, 0);\n"
706 "    if (efd == -1)\n"
707 "        handle_error(\"eventfd\");\n"
708 msgstr ""
709
710 #. type: Plain text
711 #: build/C/man2/eventfd.2:398
712 #, no-wrap
713 msgid ""
714 "    switch (fork()) {\n"
715 "    case 0:\n"
716 "        for (j = 1; j E<lt> argc; j++) {\n"
717 "            printf(\"Child writing %s to efd\\en\", argv[j]);\n"
718 "            u = strtoull(argv[j], NULL, 0);\n"
719 "                    /* strtoull() allows various bases */\n"
720 "            s = write(efd, &u, sizeof(uint64_t));\n"
721 "            if (s != sizeof(uint64_t))\n"
722 "                handle_error(\"write\");\n"
723 "        }\n"
724 "        printf(\"Child completed write loop\\en\");\n"
725 msgstr ""
726
727 #. type: Plain text
728 #: build/C/man2/eventfd.2:400
729 #, no-wrap
730 msgid "        exit(EXIT_SUCCESS);\n"
731 msgstr ""
732
733 #. type: Plain text
734 #: build/C/man2/eventfd.2:403
735 #, no-wrap
736 msgid ""
737 "    default:\n"
738 "        sleep(2);\n"
739 msgstr ""
740
741 #. type: Plain text
742 #: build/C/man2/eventfd.2:411
743 #, no-wrap
744 msgid ""
745 "        printf(\"Parent about to read\\en\");\n"
746 "        s = read(efd, &u, sizeof(uint64_t));\n"
747 "        if (s != sizeof(uint64_t))\n"
748 "            handle_error(\"read\");\n"
749 "        printf(\"Parent read %llu (0x%llx) from efd\\en\",\n"
750 "                (unsigned long long) u, (unsigned long long) u);\n"
751 "        exit(EXIT_SUCCESS);\n"
752 msgstr ""
753
754 #. type: Plain text
755 #: build/C/man2/eventfd.2:416
756 #, no-wrap
757 msgid ""
758 "    case -1:\n"
759 "        handle_error(\"fork\");\n"
760 "    }\n"
761 "}\n"
762 msgstr ""
763
764 #. type: Plain text
765 #: build/C/man2/eventfd.2:428
766 msgid ""
767 "B<futex>(2), B<pipe>(2), B<poll>(2), B<read>(2), B<select>(2), "
768 "B<signalfd>(2), B<timerfd_create>(2), B<write>(2), B<epoll>(7), "
769 "B<sem_overview>(7)"
770 msgstr ""
771
772 #. type: TH
773 #: build/C/man2/getitimer.2:7
774 #, no-wrap
775 msgid "GETITIMER"
776 msgstr ""
777
778 #. type: Plain text
779 #: build/C/man2/getitimer.2:10
780 msgid "getitimer, setitimer - get or set value of an interval timer"
781 msgstr ""
782
783 #. type: Plain text
784 #: build/C/man2/getitimer.2:13
785 #, no-wrap
786 msgid "B<#include E<lt>sys/time.hE<gt>>\n"
787 msgstr ""
788
789 #. type: Plain text
790 #: build/C/man2/getitimer.2:15
791 #, no-wrap
792 msgid "B<int getitimer(int >I<which>B<, struct itimerval *>I<curr_value>B<);>\n"
793 msgstr ""
794
795 #. type: Plain text
796 #: build/C/man2/getitimer.2:18
797 #, no-wrap
798 msgid ""
799 "B<int setitimer(int >I<which>B<, const struct itimerval *>I<new_value>B<,>\n"
800 "B<              struct itimerval *>I<old_value>B<);>\n"
801 msgstr ""
802
803 #. type: Plain text
804 #: build/C/man2/getitimer.2:24
805 msgid ""
806 "The system provides each process with three interval timers, each "
807 "decrementing in a distinct time domain.  When any timer expires, a signal is "
808 "sent to the process, and the timer (potentially) restarts."
809 msgstr ""
810
811 #. type: TP
812 #: build/C/man2/getitimer.2:24
813 #, no-wrap
814 msgid "B<ITIMER_REAL>"
815 msgstr ""
816
817 #. type: Plain text
818 #: build/C/man2/getitimer.2:29
819 msgid "decrements in real time, and delivers B<SIGALRM> upon expiration."
820 msgstr ""
821
822 #. type: TP
823 #: build/C/man2/getitimer.2:29
824 #, no-wrap
825 msgid "B<ITIMER_VIRTUAL>"
826 msgstr ""
827
828 #. type: Plain text
829 #: build/C/man2/getitimer.2:34
830 msgid ""
831 "decrements only when the process is executing, and delivers B<SIGVTALRM> "
832 "upon expiration."
833 msgstr ""
834
835 #. type: TP
836 #: build/C/man2/getitimer.2:34
837 #, no-wrap
838 msgid "B<ITIMER_PROF>"
839 msgstr ""
840
841 #. type: Plain text
842 #: build/C/man2/getitimer.2:44
843 msgid ""
844 "decrements both when the process executes and when the system is executing "
845 "on behalf of the process.  Coupled with B<ITIMER_VIRTUAL>, this timer is "
846 "usually used to profile the time spent by the application in user and kernel "
847 "space.  B<SIGPROF> is delivered upon expiration."
848 msgstr ""
849
850 #. type: Plain text
851 #: build/C/man2/getitimer.2:46
852 msgid "Timer values are defined by the following structures:"
853 msgstr ""
854
855 #. type: Plain text
856 #: build/C/man2/getitimer.2:54
857 #, no-wrap
858 msgid ""
859 "struct itimerval {\n"
860 "    struct timeval it_interval; /* next value */\n"
861 "    struct timeval it_value;    /* current value */\n"
862 "};\n"
863 msgstr ""
864
865 #. type: Plain text
866 #: build/C/man2/getitimer.2:59
867 #, no-wrap
868 msgid ""
869 "struct timeval {\n"
870 "    long tv_sec;                /* seconds */\n"
871 "    long tv_usec;               /* microseconds */\n"
872 "};\n"
873 msgstr ""
874
875 #. type: Plain text
876 #: build/C/man2/getitimer.2:81
877 msgid ""
878 "The function B<getitimer>()  fills the structure pointed to by I<curr_value> "
879 "with the current setting for the timer specified by I<which> (one of "
880 "B<ITIMER_REAL>, B<ITIMER_VIRTUAL>, or B<ITIMER_PROF>).  The element "
881 "I<it_value> is set to the amount of time remaining on the timer, or zero if "
882 "the timer is disabled.  Similarly, I<it_interval> is set to the reset value."
883 msgstr ""
884
885 #. type: Plain text
886 #: build/C/man2/getitimer.2:89
887 msgid ""
888 "The function B<setitimer>()  sets the specified timer to the value in "
889 "I<new_value>.  If I<old_value> is non-NULL, the old value of the timer is "
890 "stored there."
891 msgstr ""
892
893 #. type: Plain text
894 #: build/C/man2/getitimer.2:99
895 msgid ""
896 "Timers decrement from I<it_value> to zero, generate a signal, and reset to "
897 "I<it_interval>.  A timer which is set to zero (I<it_value> is zero or the "
898 "timer expires and I<it_interval> is zero) stops."
899 msgstr ""
900
901 #. type: Plain text
902 #: build/C/man2/getitimer.2:105
903 msgid ""
904 "Both I<tv_sec> and I<tv_usec> are significant in determining the duration of "
905 "a timer."
906 msgstr ""
907
908 #. type: Plain text
909 #: build/C/man2/getitimer.2:117
910 msgid ""
911 "Timers will never expire before the requested time, but may expire some "
912 "(short) time afterward, which depends on the system timer resolution and on "
913 "the system load; see B<time>(7).  (But see BUGS below.)  Upon expiration, a "
914 "signal will be generated and the timer reset.  If the timer expires while "
915 "the process is active (always true for B<ITIMER_VIRTUAL>)  the signal will "
916 "be delivered immediately when generated.  Otherwise the delivery will be "
917 "offset by a small time dependent on the system loading."
918 msgstr ""
919
920 #. type: Plain text
921 #: build/C/man2/getitimer.2:122 build/C/man2/killpg.2:93 build/C/man2/tkill.2:73
922 msgid ""
923 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
924 "appropriately."
925 msgstr ""
926
927 #. type: TP
928 #: build/C/man2/getitimer.2:123 build/C/man2/prctl.2:564 build/C/man2/sigaction.2:660 build/C/man2/sigaltstack.2:136 build/C/man2/sigpending.2:55 build/C/man2/sigprocmask.2:95 build/C/man2/sigsuspend.2:73 build/C/man2/timer_settime.2:180 build/C/man2/timerfd_create.2:341
929 #, no-wrap
930 msgid "B<EFAULT>"
931 msgstr ""
932
933 #. type: Plain text
934 #: build/C/man2/getitimer.2:130 build/C/man2/timerfd_create.2:348
935 msgid "I<new_value>, I<old_value>, or I<curr_value> is not valid a pointer."
936 msgstr ""
937
938 #. type: Plain text
939 #: build/C/man2/getitimer.2:143
940 msgid ""
941 "I<which> is not one of B<ITIMER_REAL>, B<ITIMER_VIRTUAL>, or B<ITIMER_PROF>; "
942 "or (since Linux 2.6.22) one of the I<tv_usec> fields in the structure "
943 "pointed to by I<new_value> contains a value outside the range 0 to 999999."
944 msgstr ""
945
946 #. type: Plain text
947 #: build/C/man2/getitimer.2:153
948 msgid ""
949 "POSIX.1-2001, SVr4, 4.4BSD (this call first appeared in 4.2BSD).  "
950 "POSIX.1-2008 marks B<getitimer>()  and B<setitimer>()  obsolete, "
951 "recommending the use of the POSIX timers API (B<timer_gettime>(2), "
952 "B<timer_settime>(2), etc.) instead."
953 msgstr ""
954
955 #. type: Plain text
956 #: build/C/man2/getitimer.2:159
957 msgid ""
958 "A child created via B<fork>(2)  does not inherit its parent's interval "
959 "timers.  Interval timers are preserved across an B<execve>(2)."
960 msgstr ""
961
962 #. type: Plain text
963 #: build/C/man2/getitimer.2:169
964 msgid ""
965 "POSIX.1 leaves the interaction between B<setitimer>()  and the three "
966 "interfaces B<alarm>(2), B<sleep>(3), and B<usleep>(3)  unspecified."
967 msgstr ""
968
969 #. type: SH
970 #: build/C/man2/getitimer.2:169 build/C/man2/kill.2:160 build/C/man3/profil.3:70 build/C/man3/psignal.3:99 build/C/man2/sigaction.2:775 build/C/man7/signal.7:836 build/C/man2/signalfd.2:349 build/C/man2/sigpending.2:76 build/C/man3/sigset.3:230 build/C/man2/timer_getoverrun.2:112 build/C/man2/timerfd_create.2:534
971 #, no-wrap
972 msgid "BUGS"
973 msgstr ""
974
975 #. type: Plain text
976 #: build/C/man2/getitimer.2:178
977 msgid ""
978 "The generation and delivery of a signal are distinct, and only one instance "
979 "of each of the signals listed above may be pending for a process.  Under "
980 "very heavy loading, an B<ITIMER_REAL> timer may expire before the signal "
981 "from a previous expiration has been delivered.  The second signal in such an "
982 "event will be lost."
983 msgstr ""
984
985 #. type: Plain text
986 #: build/C/man2/getitimer.2:193
987 msgid ""
988 "On Linux kernels before 2.6.16, timer values are represented in jiffies.  If "
989 "a request is made set a timer with a value whose jiffies representation "
990 "exceeds B<MAX_SEC_IN_JIFFIES> (defined in I<include/linux/jiffies.h>), then "
991 "the timer is silently truncated to this ceiling value.  On Linux/i386 "
992 "(where, since Linux 2.6.13, the default jiffy is 0.004 seconds), this means "
993 "that the ceiling value for a timer is approximately 99.42 days.  Since Linux "
994 "2.6.16, the kernel uses a different internal representation for times, and "
995 "this ceiling is removed."
996 msgstr ""
997
998 #.  4 Jul 2005: It looks like this bug may remain in 2.4.x.
999 #.      http://lkml.org/lkml/2005/7/1/165
1000 #. type: Plain text
1001 #: build/C/man2/getitimer.2:200
1002 msgid ""
1003 "On certain systems (including i386), Linux kernels before version 2.6.12 "
1004 "have a bug which will produce premature timer expirations of up to one jiffy "
1005 "under some circumstances.  This bug is fixed in kernel 2.6.12."
1006 msgstr ""
1007
1008 #.  Bugzilla report 25 Apr 2006:
1009 #.  http://bugzilla.kernel.org/show_bug.cgi?id=6443
1010 #.  "setitimer() should reject noncanonical arguments"
1011 #. type: Plain text
1012 #: build/C/man2/getitimer.2:219
1013 msgid ""
1014 "POSIX.1-2001 says that B<setitimer>()  should fail if a I<tv_usec> value is "
1015 "specified that is outside of the range 0 to 999999.  However, in kernels up "
1016 "to and including 2.6.21, Linux does not give an error, but instead silently "
1017 "adjusts the corresponding seconds value for the timer.  From kernel 2.6.22 "
1018 "onward, this nonconformance has been repaired: an improper I<tv_usec> value "
1019 "results in an B<EINVAL> error."
1020 msgstr ""
1021
1022 #. type: Plain text
1023 #: build/C/man2/getitimer.2:226
1024 msgid ""
1025 "B<gettimeofday>(2), B<sigaction>(2), B<signal>(2), B<timer_create>(2), "
1026 "B<timerfd_create>(2), B<time>(7)"
1027 msgstr ""
1028
1029 #. type: TH
1030 #: build/C/man3/gsignal.3:25
1031 #, no-wrap
1032 msgid "GSIGNAL"
1033 msgstr ""
1034
1035 #. type: TH
1036 #: build/C/man3/gsignal.3:25 build/C/man3/profil.3:28 build/C/man3/sigvec.3:24
1037 #, no-wrap
1038 msgid "2007-07-26"
1039 msgstr ""
1040
1041 #. type: Plain text
1042 #: build/C/man3/gsignal.3:28
1043 msgid "gsignal, ssignal - software signal facility"
1044 msgstr ""
1045
1046 #. type: Plain text
1047 #: build/C/man3/gsignal.3:31 build/C/man2/kill.2:52 build/C/man3/psignal.3:34 build/C/man3/raise.3:33 build/C/man2/sigaction.2:51 build/C/man3/siginterrupt.3:35 build/C/man3/sigpause.3:29 build/C/man3/sigwait.3:30 build/C/man2/sigwaitinfo.2:29
1048 #, no-wrap
1049 msgid "B<#include E<lt>signal.hE<gt>>\n"
1050 msgstr ""
1051
1052 #. type: Plain text
1053 #: build/C/man3/gsignal.3:33
1054 #, no-wrap
1055 msgid "B<typedef void (*sighandler_t)(int);>\n"
1056 msgstr ""
1057
1058 #. type: Plain text
1059 #: build/C/man3/gsignal.3:35
1060 #, no-wrap
1061 msgid "B<int gsignal(int >I<signum>B<);>\n"
1062 msgstr ""
1063
1064 #. type: Plain text
1065 #: build/C/man3/gsignal.3:37
1066 #, no-wrap
1067 msgid "B<sighandler_t ssignal(int >I<signum>B<, sighandler_t >I<action>B<);>\n"
1068 msgstr ""
1069
1070 #. type: Plain text
1071 #: build/C/man3/gsignal.3:42 build/C/man2/kill.2:59 build/C/man2/killpg.2:51 build/C/man3/profil.3:40 build/C/man3/psignal.3:44 build/C/man2/sigaction.2:59 build/C/man2/sigaltstack.2:36 build/C/man3/siginterrupt.3:42 build/C/man2/sigpending.2:38 build/C/man2/sigprocmask.2:39 build/C/man3/sigqueue.3:37 build/C/man3/sigset.3:43 build/C/man3/sigsetops.3:49 build/C/man2/sigsuspend.2:38 build/C/man3/sigvec.3:43 build/C/man3/sigwait.3:37 build/C/man2/sigwaitinfo.2:39 build/C/man2/timer_create.2:46 build/C/man2/timer_delete.2:38 build/C/man2/timer_getoverrun.2:38 build/C/man2/timer_settime.2:42 build/C/man2/wait.2:68 build/C/man2/wait4.2:54
1072 msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
1073 msgstr ""
1074
1075 #. type: Plain text
1076 #: build/C/man3/gsignal.3:47
1077 msgid "B<gsignal>(), B<ssignal>(): _SVID_SOURCE"
1078 msgstr ""
1079
1080 #. type: Plain text
1081 #: build/C/man3/gsignal.3:55
1082 msgid ""
1083 "Don't use these functions under Linux.  Due to a historical mistake, under "
1084 "Linux these functions are aliases for B<raise>(3)  and B<signal>(2), "
1085 "respectively."
1086 msgstr ""
1087
1088 #. type: Plain text
1089 #: build/C/man3/gsignal.3:93
1090 msgid ""
1091 "Elsewhere, on System V-like systems, these functions implement software "
1092 "signaling, entirely independent of the classical B<signal>(2)  and "
1093 "B<kill>(2)  functions.  The function B<ssignal>()  defines the action to "
1094 "take when the software signal with number I<signum> is raised using the "
1095 "function B<gsignal>(), and returns the previous such action or B<SIG_DFL>.  "
1096 "The function B<gsignal>()  does the following: if no action (or the action "
1097 "B<SIG_DFL>)  was specified for I<signum>, then it does nothing and returns "
1098 "0.  If the action B<SIG_IGN> was specified for I<signum>, then it does "
1099 "nothing and returns 1.  Otherwise, it resets the action to B<SIG_DFL> and "
1100 "calls the action function with argument I<signum>, and returns the value "
1101 "returned by that function.  The range of possible values I<signum> varies "
1102 "(often 1-15 or 1-17)."
1103 msgstr ""
1104
1105 #. type: Plain text
1106 #: build/C/man3/gsignal.3:101
1107 msgid ""
1108 "These functions are available under AIX, DG/UX, HP-UX, SCO, Solaris, Tru64.  "
1109 "They are called obsolete under most of these systems, and are broken under "
1110 "Linux libc and glibc.  Some systems also have B<gsignal_r>()  and "
1111 "B<ssignal_r>()."
1112 msgstr ""
1113
1114 #. type: Plain text
1115 #: build/C/man3/gsignal.3:105
1116 msgid "B<kill>(2), B<signal>(2), B<raise>(3)"
1117 msgstr ""
1118
1119 #. type: TH
1120 #: build/C/man2/kill.2:44
1121 #, no-wrap
1122 msgid "KILL"
1123 msgstr ""
1124
1125 #. type: TH
1126 #: build/C/man2/kill.2:44
1127 #, no-wrap
1128 msgid "2009-09-15"
1129 msgstr ""
1130
1131 #. type: Plain text
1132 #: build/C/man2/kill.2:47
1133 msgid "kill - send signal to a process"
1134 msgstr ""
1135
1136 #. type: Plain text
1137 #: build/C/man2/kill.2:50
1138 #, no-wrap
1139 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1140 msgstr ""
1141
1142 #. type: Plain text
1143 #: build/C/man2/kill.2:54
1144 #, no-wrap
1145 msgid "B<int kill(pid_t >I<pid>B<, int >I<sig>B<);>\n"
1146 msgstr ""
1147
1148 #. type: Plain text
1149 #: build/C/man2/kill.2:64
1150 msgid "B<kill>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
1151 msgstr ""
1152
1153 #. type: Plain text
1154 #: build/C/man2/kill.2:70
1155 msgid ""
1156 "The B<kill>()  system call can be used to send any signal to any process "
1157 "group or process."
1158 msgstr ""
1159
1160 #. type: Plain text
1161 #: build/C/man2/kill.2:73
1162 msgid ""
1163 "If I<pid> is positive, then signal I<sig> is sent to the process with the ID "
1164 "specified by I<pid>."
1165 msgstr ""
1166
1167 #. type: Plain text
1168 #: build/C/man2/kill.2:76
1169 msgid ""
1170 "If I<pid> equals 0, then I<sig> is sent to every process in the process "
1171 "group of the calling process."
1172 msgstr ""
1173
1174 #. type: Plain text
1175 #: build/C/man2/kill.2:80
1176 msgid ""
1177 "If I<pid> equals -1, then I<sig> is sent to every process for which the "
1178 "calling process has permission to send signals, except for process 1 "
1179 "(I<init>), but see below."
1180 msgstr ""
1181
1182 #. type: Plain text
1183 #: build/C/man2/kill.2:83
1184 msgid ""
1185 "If I<pid> is less than -1, then I<sig> is sent to every process in the "
1186 "process group whose ID is I<-pid>."
1187 msgstr ""
1188
1189 #. type: Plain text
1190 #: build/C/man2/kill.2:88
1191 msgid ""
1192 "If I<sig> is 0, then no signal is sent, but error checking is still "
1193 "performed; this can be used to check for the existence of a process ID or "
1194 "process group ID."
1195 msgstr ""
1196
1197 #. type: Plain text
1198 #: build/C/man2/kill.2:99 build/C/man2/killpg.2:88
1199 msgid ""
1200 "For a process to have permission to send a signal it must either be "
1201 "privileged (under Linux: have the B<CAP_KILL> capability), or the real or "
1202 "effective user ID of the sending process must equal the real or saved "
1203 "set-user-ID of the target process.  In the case of B<SIGCONT> it suffices "
1204 "when the sending and receiving processes belong to the same session."
1205 msgstr ""
1206
1207 #. type: Plain text
1208 #: build/C/man2/kill.2:104
1209 msgid ""
1210 "On success (at least one signal was sent), zero is returned.  On error, -1 "
1211 "is returned, and I<errno> is set appropriately."
1212 msgstr ""
1213
1214 #. type: Plain text
1215 #: build/C/man2/kill.2:108
1216 msgid "An invalid signal was specified."
1217 msgstr ""
1218
1219 #. type: TP
1220 #: build/C/man2/kill.2:108 build/C/man2/killpg.2:98 build/C/man2/prctl.2:639 build/C/man2/prctl.2:651 build/C/man2/prctl.2:661 build/C/man2/prctl.2:669 build/C/man2/rt_sigqueueinfo.2:143 build/C/man2/sigaltstack.2:149 build/C/man3/sigqueue.3:100 build/C/man2/tkill.2:77
1221 #, no-wrap
1222 msgid "B<EPERM>"
1223 msgstr ""
1224
1225 #. type: Plain text
1226 #: build/C/man2/kill.2:112 build/C/man2/killpg.2:102
1227 msgid ""
1228 "The process does not have permission to send the signal to any of the target "
1229 "processes."
1230 msgstr ""
1231
1232 #. type: TP
1233 #: build/C/man2/kill.2:112 build/C/man2/killpg.2:102 build/C/man2/killpg.2:106 build/C/man2/rt_sigqueueinfo.2:151 build/C/man3/sigqueue.3:106 build/C/man2/tkill.2:82
1234 #, no-wrap
1235 msgid "B<ESRCH>"
1236 msgstr ""
1237
1238 #. type: Plain text
1239 #: build/C/man2/kill.2:120
1240 msgid ""
1241 "The pid or process group does not exist.  Note that an existing process "
1242 "might be a zombie, a process which already committed termination, but has "
1243 "not yet been B<wait>(2)ed for."
1244 msgstr ""
1245
1246 #. type: Plain text
1247 #: build/C/man2/kill.2:122 build/C/man2/pause.2:59 build/C/man2/wait.2:423
1248 msgid "SVr4, 4.3BSD, POSIX.1-2001."
1249 msgstr ""
1250
1251 #. type: Plain text
1252 #: build/C/man2/kill.2:130
1253 msgid ""
1254 "The only signals that can be sent to process ID 1, the I<init> process, are "
1255 "those for which I<init> has explicitly installed signal handlers.  This is "
1256 "done to assure the system is not brought down accidentally."
1257 msgstr ""
1258
1259 #. type: Plain text
1260 #: build/C/man2/kill.2:136
1261 msgid ""
1262 "POSIX.1-2001 requires that I<kill(-1,sig)> send I<sig> to all processes that "
1263 "the calling process may send signals to, except possibly for some "
1264 "implementation-defined system processes.  Linux allows a process to signal "
1265 "itself, but on Linux the call I<kill(-1,sig)> does not signal the calling "
1266 "process."
1267 msgstr ""
1268
1269 #. type: Plain text
1270 #: build/C/man2/kill.2:146
1271 msgid ""
1272 "POSIX.1-2001 requires that if a process sends a signal to itself, and the "
1273 "sending thread does not have the signal blocked, and no other thread has it "
1274 "unblocked or is waiting for it in B<sigwait>(3), at least one unblocked "
1275 "signal must be delivered to the sending thread before the B<kill>()  "
1276 "returns."
1277 msgstr ""
1278
1279 #. type: SS
1280 #: build/C/man2/kill.2:146 build/C/man3/sigpause.3:75 build/C/man2/wait.2:477
1281 #, no-wrap
1282 msgid "Linux Notes"
1283 msgstr ""
1284
1285 #.  In the 0.* kernels things chopped and changed quite
1286 #.  a bit - MTK, 24 Jul 02
1287 #. type: Plain text
1288 #: build/C/man2/kill.2:160
1289 msgid ""
1290 "Across different kernel versions, Linux has enforced different rules for the "
1291 "permissions required for an unprivileged process to send a signal to another "
1292 "process.  In kernels 1.0 to 1.2.2, a signal could be sent if the effective "
1293 "user ID of the sender matched that of the receiver, or the real user ID of "
1294 "the sender matched that of the receiver.  From kernel 1.2.3 until 1.3.77, a "
1295 "signal could be sent if the effective user ID of the sender matched either "
1296 "the real or effective user ID of the receiver.  The current rules, which "
1297 "conform to POSIX.1-2001, were adopted in kernel 1.3.78."
1298 msgstr ""
1299
1300 #. type: Plain text
1301 #: build/C/man2/kill.2:170
1302 msgid ""
1303 "In 2.6 kernels up to and including 2.6.7, there was a bug that meant that "
1304 "when sending signals to a process group, B<kill>()  failed with the error "
1305 "B<EPERM> if the caller did have permission to send the signal to I<any> "
1306 "(rather than I<all>) of the members of the process group.  Notwithstanding "
1307 "this error return, the signal was still delivered to all of the processes "
1308 "for which the caller had permission to signal."
1309 msgstr ""
1310
1311 #. type: Plain text
1312 #: build/C/man2/kill.2:180
1313 msgid ""
1314 "B<_exit>(2), B<killpg>(2), B<signal>(2), B<tkill>(2), B<exit>(3), "
1315 "B<sigqueue>(3), B<capabilities>(7), B<credentials>(7), B<signal>(7)"
1316 msgstr ""
1317
1318 #. type: TH
1319 #: build/C/man2/killpg.2:40
1320 #, no-wrap
1321 msgid "KILLPG"
1322 msgstr ""
1323
1324 #. type: TH
1325 #: build/C/man2/killpg.2:40 build/C/man3/sigset.3:24 build/C/man2/wait4.2:34
1326 #, no-wrap
1327 msgid "2010-09-20"
1328 msgstr ""
1329
1330 #. type: Plain text
1331 #: build/C/man2/killpg.2:43
1332 msgid "killpg - send signal to a process group"
1333 msgstr ""
1334
1335 #. type: Plain text
1336 #: build/C/man2/killpg.2:47
1337 msgid "B<int killpg(int >I<pgrp>B<, int >I<sig>B<);>"
1338 msgstr ""
1339
1340 #. type: TP
1341 #: build/C/man2/killpg.2:54
1342 #, no-wrap
1343 msgid "B<killpg>():"
1344 msgstr ""
1345
1346 #. type: Plain text
1347 #: build/C/man2/killpg.2:58 build/C/man2/sigaltstack.2:44 build/C/man3/siginterrupt.3:49 build/C/man2/wait4.2:61
1348 msgid ""
1349 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
1350 "_XOPEN_SOURCE_EXTENDED"
1351 msgstr ""
1352
1353 #. type: Plain text
1354 #: build/C/man2/killpg.2:68
1355 msgid ""
1356 "B<killpg>()  sends the signal I<sig> to the process group I<pgrp>.  See "
1357 "B<signal>(7)  for a list of signals."
1358 msgstr ""
1359
1360 #. type: Plain text
1361 #: build/C/man2/killpg.2:77
1362 msgid ""
1363 "If I<pgrp> is 0, B<killpg>()  sends the signal to the calling process's "
1364 "process group.  (POSIX says: If I<pgrp> is less than or equal to 1, the "
1365 "behavior is undefined.)"
1366 msgstr ""
1367
1368 #. type: Plain text
1369 #: build/C/man2/killpg.2:98
1370 msgid "I<Sig> is not a valid signal number."
1371 msgstr ""
1372
1373 #. type: Plain text
1374 #: build/C/man2/killpg.2:106
1375 msgid "No process can be found in the process group specified by I<pgrp>."
1376 msgstr ""
1377
1378 #. type: Plain text
1379 #: build/C/man2/killpg.2:110
1380 msgid ""
1381 "The process group was given as 0 but the sending process does not have a "
1382 "process group."
1383 msgstr ""
1384
1385 #. type: Plain text
1386 #: build/C/man2/killpg.2:114
1387 msgid ""
1388 "SVr4, 4.4BSD (the B<killpg>()  function call first appeared in 4BSD), "
1389 "POSIX.1-2001."
1390 msgstr ""
1391
1392 #. type: Plain text
1393 #: build/C/man2/killpg.2:128
1394 msgid ""
1395 "There are various differences between the permission checking in BSD-type "
1396 "systems and System V-type systems.  See the POSIX rationale for B<kill>().  "
1397 "A difference not mentioned by POSIX concerns the return value B<EPERM>: BSD "
1398 "documents that no signal is sent and B<EPERM> returned when the permission "
1399 "check failed for at least one target process, while POSIX documents B<EPERM> "
1400 "only when the permission check failed for all target processes."
1401 msgstr ""
1402
1403 #. type: Plain text
1404 #: build/C/man2/killpg.2:133
1405 msgid ""
1406 "On Linux, B<killpg>()  is implemented as a library function that makes the "
1407 "call I<kill(-pgrp,\\ sig)>."
1408 msgstr ""
1409
1410 #. type: Plain text
1411 #: build/C/man2/killpg.2:139
1412 msgid ""
1413 "B<getpgrp>(2), B<kill>(2), B<signal>(2), B<capabilities>(7), "
1414 "B<credentials>(7)"
1415 msgstr ""
1416
1417 #. type: TH
1418 #: build/C/man2/pause.2:30
1419 #, no-wrap
1420 msgid "PAUSE"
1421 msgstr ""
1422
1423 #. type: TH
1424 #: build/C/man2/pause.2:30
1425 #, no-wrap
1426 msgid "2008-10-06"
1427 msgstr ""
1428
1429 #. type: Plain text
1430 #: build/C/man2/pause.2:33
1431 msgid "pause - wait for signal"
1432 msgstr ""
1433
1434 #. type: Plain text
1435 #: build/C/man2/pause.2:35 build/C/man3/profil.3:33
1436 msgid "B<#include E<lt>unistd.hE<gt>>"
1437 msgstr ""
1438
1439 #. type: Plain text
1440 #: build/C/man2/pause.2:37
1441 msgid "B<int pause(void);>"
1442 msgstr ""
1443
1444 #. type: Plain text
1445 #: build/C/man2/pause.2:42
1446 msgid ""
1447 "B<pause>()  causes the calling process (or thread) to sleep until a signal "
1448 "is delivered that either terminates the process or causes the invocation of "
1449 "a signal-catching function."
1450 msgstr ""
1451
1452 #.  .BR ERESTARTNOHAND .
1453 #. type: Plain text
1454 #: build/C/man2/pause.2:53
1455 msgid ""
1456 "B<pause>()  only returns when a signal was caught and the signal-catching "
1457 "function returned.  In this case B<pause>()  returns -1, and I<errno> is set "
1458 "to B<EINTR>."
1459 msgstr ""
1460
1461 #. type: TP
1462 #: build/C/man2/pause.2:54 build/C/man2/sigsuspend.2:77 build/C/man2/sigwaitinfo.2:116 build/C/man2/wait.2:409
1463 #, no-wrap
1464 msgid "B<EINTR>"
1465 msgstr ""
1466
1467 #. type: Plain text
1468 #: build/C/man2/pause.2:57
1469 msgid "a signal was caught and the signal-catching function returned."
1470 msgstr ""
1471
1472 #. type: Plain text
1473 #: build/C/man2/pause.2:64
1474 msgid "B<kill>(2), B<select>(2), B<signal>(2), B<sigsuspend>(2)"
1475 msgstr ""
1476
1477 #. type: TH
1478 #: build/C/man2/prctl.2:48
1479 #, no-wrap
1480 msgid "PRCTL"
1481 msgstr ""
1482
1483 #. type: TH
1484 #: build/C/man2/prctl.2:48
1485 #, no-wrap
1486 msgid "2012-04-23"
1487 msgstr ""
1488
1489 #. type: Plain text
1490 #: build/C/man2/prctl.2:51
1491 msgid "prctl - operations on a process"
1492 msgstr ""
1493
1494 #. type: Plain text
1495 #: build/C/man2/prctl.2:54
1496 #, no-wrap
1497 msgid "B<#include E<lt>sys/prctl.hE<gt>>\n"
1498 msgstr ""
1499
1500 #. type: Plain text
1501 #: build/C/man2/prctl.2:57
1502 #, no-wrap
1503 msgid ""
1504 "B<int prctl(int >I<option>B<, unsigned long >I<arg2>B<, unsigned long "
1505 ">I<arg3>B<,>\n"
1506 "B<          unsigned long >I<arg4>B<, unsigned long >I<arg5>B<);>\n"
1507 msgstr ""
1508
1509 #. type: Plain text
1510 #: build/C/man2/prctl.2:64
1511 msgid ""
1512 "B<prctl>()  is called with a first argument describing what to do (with "
1513 "values defined in I<E<lt>linux/prctl.hE<gt>>), and further arguments with a "
1514 "significance depending on the first one.  The first argument can be:"
1515 msgstr ""
1516
1517 #. type: TP
1518 #: build/C/man2/prctl.2:64
1519 #, no-wrap
1520 msgid "B<PR_CAPBSET_READ> (since Linux 2.6.25)"
1521 msgstr ""
1522
1523 #. type: Plain text
1524 #: build/C/man2/prctl.2:76
1525 msgid ""
1526 "Return (as the function result) 1 if the capability specified in I<arg2> is "
1527 "in the calling thread's capability bounding set, or 0 if it is not.  (The "
1528 "capability constants are defined in I<E<lt>linux/capability.hE<gt>>.)  The "
1529 "capability bounding set dictates whether the process can receive the "
1530 "capability through a file's permitted capability set on a subsequent call to "
1531 "B<execve>(2)."
1532 msgstr ""
1533
1534 #. type: Plain text
1535 #: build/C/man2/prctl.2:81
1536 msgid ""
1537 "If the capability specified in I<arg2> is not valid, then the call fails "
1538 "with the error B<EINVAL>."
1539 msgstr ""
1540
1541 #. type: TP
1542 #: build/C/man2/prctl.2:81
1543 #, no-wrap
1544 msgid "B<PR_CAPBSET_DROP> (since Linux 2.6.25)"
1545 msgstr ""
1546
1547 #. type: Plain text
1548 #: build/C/man2/prctl.2:90
1549 msgid ""
1550 "If the calling thread has the B<CAP_SETPCAP> capability, then drop the "
1551 "capability specified by I<arg2> from the calling thread's capability "
1552 "bounding set.  Any children of the calling thread will inherit the newly "
1553 "reduced bounding set."
1554 msgstr ""
1555
1556 #. type: Plain text
1557 #: build/C/man2/prctl.2:102
1558 msgid ""
1559 "The call fails with the error: B<EPERM> if the calling thread does not have "
1560 "the B<CAP_SETPCAP>; B<EINVAL> if I<arg2> does not represent a valid "
1561 "capability; or B<EINVAL> if file capabilities are not enabled in the kernel, "
1562 "in which case bounding sets are not supported."
1563 msgstr ""
1564
1565 #. type: TP
1566 #: build/C/man2/prctl.2:102
1567 #, no-wrap
1568 msgid "B<PR_SET_DUMPABLE> (since Linux 2.3.20)"
1569 msgstr ""
1570
1571 #.  See http://marc.theaimsgroup.com/?l=linux-kernel&m=115270289030630&w=2
1572 #.  Subject:    Fix prctl privilege escalation (CVE-2006-2451)
1573 #.  From:       Marcel Holtmann <marcel () holtmann ! org>
1574 #.  Date:       2006-07-12 11:12:00
1575 #. type: Plain text
1576 #: build/C/man2/prctl.2:128
1577 msgid ""
1578 "Set the state of the flag determining whether core dumps are produced for "
1579 "this process upon delivery of a signal whose default behavior is to produce "
1580 "a core dump.  (Normally this flag is set for a process by default, but it is "
1581 "cleared when a set-user-ID or set-group-ID program is executed and also by "
1582 "various system calls that manipulate process UIDs and GIDs).  In kernels up "
1583 "to and including 2.6.12, I<arg2> must be either 0 (process is not dumpable) "
1584 "or 1 (process is dumpable).  Between kernels 2.6.13 and 2.6.17, the value 2 "
1585 "was also permitted, which caused any binary which normally would not be "
1586 "dumped to be dumped readable by root only; for security reasons, this "
1587 "feature has been removed.  (See also the description of "
1588 "I</proc/sys/fs/suid_dumpable> in B<proc>(5).)  Processes that are not "
1589 "dumpable can not be attached via B<ptrace(2)> B<PTRACE_ATTACH>."
1590 msgstr ""
1591
1592 #. type: TP
1593 #: build/C/man2/prctl.2:128
1594 #, no-wrap
1595 msgid "B<PR_GET_DUMPABLE> (since Linux 2.3.20)"
1596 msgstr ""
1597
1598 #.  Since Linux 2.6.13, the dumpable flag can have the value 2,
1599 #.  but in 2.6.13 PR_GET_DUMPABLE simply returns 1 if the dumpable
1600 #.  flags has a nonzero value.  This was fixed in 2.6.14.
1601 #. type: Plain text
1602 #: build/C/man2/prctl.2:135
1603 msgid ""
1604 "Return (as the function result) the current state of the calling process's "
1605 "dumpable flag."
1606 msgstr ""
1607
1608 #. type: TP
1609 #: build/C/man2/prctl.2:135
1610 #, no-wrap
1611 msgid "B<PR_SET_ENDIAN> (since Linux 2.6.18, PowerPC only)"
1612 msgstr ""
1613
1614 #.  Respectively 0, 1, 2
1615 #. type: Plain text
1616 #: build/C/man2/prctl.2:145
1617 msgid ""
1618 "Set the endian-ness of the calling process to the value given in I<arg2>, "
1619 "which should be one of the following: B<PR_ENDIAN_BIG>, B<PR_ENDIAN_LITTLE>, "
1620 "or B<PR_ENDIAN_PPC_LITTLE> (PowerPC pseudo little endian)."
1621 msgstr ""
1622
1623 #. type: TP
1624 #: build/C/man2/prctl.2:145
1625 #, no-wrap
1626 msgid "B<PR_GET_ENDIAN> (since Linux 2.6.18, PowerPC only)"
1627 msgstr ""
1628
1629 #. type: Plain text
1630 #: build/C/man2/prctl.2:150
1631 msgid ""
1632 "Return the endian-ness of the calling process, in the location pointed to by "
1633 "I<(int\\ *) arg2>."
1634 msgstr ""
1635
1636 #. type: TP
1637 #: build/C/man2/prctl.2:150
1638 #, no-wrap
1639 msgid "B<PR_SET_FPEMU> (since Linux 2.4.18, 2.5.9, only on ia64)"
1640 msgstr ""
1641
1642 #. type: Plain text
1643 #: build/C/man2/prctl.2:157
1644 msgid ""
1645 "Set floating-point emulation control bits to I<arg2>.  Pass "
1646 "B<PR_FPEMU_NOPRINT> to silently emulate fp operations accesses, or "
1647 "B<PR_FPEMU_SIGFPE> to not emulate fp operations and send B<SIGFPE> instead."
1648 msgstr ""
1649
1650 #. type: TP
1651 #: build/C/man2/prctl.2:157
1652 #, no-wrap
1653 msgid "B<PR_GET_FPEMU> (since Linux 2.4.18, 2.5.9, only on ia64)"
1654 msgstr ""
1655
1656 #. type: Plain text
1657 #: build/C/man2/prctl.2:162
1658 msgid ""
1659 "Return floating-point emulation control bits, in the location pointed to by "
1660 "I<(int\\ *) arg2>."
1661 msgstr ""
1662
1663 #. type: TP
1664 #: build/C/man2/prctl.2:162
1665 #, no-wrap
1666 msgid "B<PR_SET_FPEXC> (since Linux 2.4.21, 2.5.32, only on PowerPC)"
1667 msgstr ""
1668
1669 #. type: Plain text
1670 #: build/C/man2/prctl.2:175
1671 msgid ""
1672 "Set floating-point exception mode to I<arg2>.  Pass B<PR_FP_EXC_SW_ENABLE> "
1673 "to use FPEXC for FP exception enables, B<PR_FP_EXC_DIV> for floating-point "
1674 "divide by zero, B<PR_FP_EXC_OVF> for floating-point overflow, "
1675 "B<PR_FP_EXC_UND> for floating-point underflow, B<PR_FP_EXC_RES> for "
1676 "floating-point inexact result, B<PR_FP_EXC_INV> for floating-point invalid "
1677 "operation, B<PR_FP_EXC_DISABLED> for FP exceptions disabled, "
1678 "B<PR_FP_EXC_NONRECOV> for async nonrecoverable exception mode, "
1679 "B<PR_FP_EXC_ASYNC> for async recoverable exception mode, "
1680 "B<PR_FP_EXC_PRECISE> for precise exception mode."
1681 msgstr ""
1682
1683 #. type: TP
1684 #: build/C/man2/prctl.2:175
1685 #, no-wrap
1686 msgid "B<PR_GET_FPEXC> (since Linux 2.4.21, 2.5.32, only on PowerPC)"
1687 msgstr ""
1688
1689 #. type: Plain text
1690 #: build/C/man2/prctl.2:180
1691 msgid ""
1692 "Return floating-point exception mode, in the location pointed to by I<(int\\ "
1693 "*) arg2>."
1694 msgstr ""
1695
1696 #. type: TP
1697 #: build/C/man2/prctl.2:180
1698 #, no-wrap
1699 msgid "B<PR_SET_KEEPCAPS> (since Linux 2.2.18)"
1700 msgstr ""
1701
1702 #. type: Plain text
1703 #: build/C/man2/prctl.2:198
1704 msgid ""
1705 "Set the state of the thread's \"keep capabilities\" flag, which determines "
1706 "whether the threads's permitted capability set is cleared when a change is "
1707 "made to the threads's user IDs such that the threads's real UID, effective "
1708 "UID, and saved set-user-ID all become nonzero when at least one of them "
1709 "previously had the value 0.  By default, the permitted capability set is "
1710 "cleared when such a change is made; setting the \"keep capabilities\" flag "
1711 "prevents it from being cleared.  I<arg2> must be either 0 (permitted "
1712 "capabilities are cleared)  or 1 (permitted capabilities are kept).  (A "
1713 "thread's I<effective> capability set is always cleared when such a "
1714 "credential change is made, regardless of the setting of the \"keep "
1715 "capabilities\" flag.)  The \"keep capabilities\" value will be reset to 0 on "
1716 "subsequent calls to B<execve>(2)."
1717 msgstr ""
1718
1719 #. type: TP
1720 #: build/C/man2/prctl.2:198
1721 #, no-wrap
1722 msgid "B<PR_GET_KEEPCAPS> (since Linux 2.2.18)"
1723 msgstr ""
1724
1725 #. type: Plain text
1726 #: build/C/man2/prctl.2:202
1727 msgid ""
1728 "Return (as the function result) the current state of the calling threads's "
1729 "\"keep capabilities\" flag."
1730 msgstr ""
1731
1732 #. type: TP
1733 #: build/C/man2/prctl.2:202
1734 #, no-wrap
1735 msgid "B<PR_SET_NAME> (since Linux 2.6.9)"
1736 msgstr ""
1737
1738 #.  TASK_COMM_LEN in include/linux/sched.h
1739 #. type: Plain text
1740 #: build/C/man2/prctl.2:210
1741 msgid ""
1742 "Set the process name for the calling process, using the value in the "
1743 "location pointed to by I<(char\\ *) arg2>.  The name can be up to 16 bytes "
1744 "long, and should be null-terminated if it contains fewer bytes."
1745 msgstr ""
1746
1747 #. type: TP
1748 #: build/C/man2/prctl.2:210
1749 #, no-wrap
1750 msgid "B<PR_GET_NAME> (since Linux 2.6.11)"
1751 msgstr ""
1752
1753 #. type: Plain text
1754 #: build/C/man2/prctl.2:217
1755 msgid ""
1756 "Return the process name for the calling process, in the buffer pointed to by "
1757 "I<(char\\ *) arg2>.  The buffer should allow space for up to 16 bytes; the "
1758 "returned string will be null-terminated if it is shorter than that."
1759 msgstr ""
1760
1761 #. type: TP
1762 #: build/C/man2/prctl.2:217
1763 #, no-wrap
1764 msgid "B<PR_SET_PDEATHSIG> (since Linux 2.1.57)"
1765 msgstr ""
1766
1767 #. type: Plain text
1768 #: build/C/man2/prctl.2:228
1769 msgid ""
1770 "Set the parent process death signal of the calling process to I<arg2> "
1771 "(either a signal value in the range 1..maxsig, or 0 to clear).  This is the "
1772 "signal that the calling process will get when its parent dies.  This value "
1773 "is cleared for the child of a B<fork>(2)  and (since Linux 2.5.36 / 2.6.23)  "
1774 "when execing a set-user_ID or set-group-ID binary."
1775 msgstr ""
1776
1777 #. type: TP
1778 #: build/C/man2/prctl.2:228
1779 #, no-wrap
1780 msgid "B<PR_GET_PDEATHSIG> (since Linux 2.3.15)"
1781 msgstr ""
1782
1783 #. type: Plain text
1784 #: build/C/man2/prctl.2:233
1785 msgid ""
1786 "Return the current value of the parent process death signal, in the location "
1787 "pointed to by I<(int\\ *) arg2>."
1788 msgstr ""
1789
1790 #. type: TP
1791 #: build/C/man2/prctl.2:233
1792 #, no-wrap
1793 msgid "B<PR_SET_SECCOMP> (since Linux 2.6.23)"
1794 msgstr ""
1795
1796 #.  See http://thread.gmane.org/gmane.linux.kernel/542632
1797 #.  [PATCH 0 of 2] seccomp updates
1798 #.  andrea@cpushare.com
1799 #. type: Plain text
1800 #: build/C/man2/prctl.2:257
1801 msgid ""
1802 "Set the secure computing mode for the calling thread.  In the current "
1803 "implementation, I<arg2> must be 1.  After the secure computing mode has been "
1804 "set to 1, the only system calls that the thread is permitted to make are "
1805 "B<read>(2), B<write>(2), B<_exit>(2), and B<sigreturn>(2).  Other system "
1806 "calls result in the delivery of a B<SIGKILL> signal.  Secure computing mode "
1807 "is useful for number-crunching applications that may need to execute "
1808 "untrusted byte code, perhaps obtained by reading from a pipe or socket.  "
1809 "This operation is only available if the kernel is configured with "
1810 "CONFIG_SECCOMP enabled."
1811 msgstr ""
1812
1813 #. type: TP
1814 #: build/C/man2/prctl.2:257
1815 #, no-wrap
1816 msgid "B<PR_GET_SECCOMP> (since Linux 2.6.23)"
1817 msgstr ""
1818
1819 #. type: Plain text
1820 #: build/C/man2/prctl.2:270
1821 msgid ""
1822 "Return the secure computing mode of the calling thread.  Not very useful for "
1823 "the current implementation (mode equals 1), but may be useful for other "
1824 "possible future modes: if the caller is not in secure computing mode, this "
1825 "operation returns 0; if the caller is in secure computing mode, then the "
1826 "B<prctl>()  call will cause a B<SIGKILL> signal to be sent to the process.  "
1827 "This operation is only available if the kernel is configured with "
1828 "CONFIG_SECCOMP enabled."
1829 msgstr ""
1830
1831 #. type: TP
1832 #: build/C/man2/prctl.2:270
1833 #, no-wrap
1834 msgid "B<PR_SET_SECUREBITS> (since Linux 2.6.26)"
1835 msgstr ""
1836
1837 #. type: Plain text
1838 #: build/C/man2/prctl.2:276
1839 msgid ""
1840 "Set the \"securebits\" flags of the calling thread to the value supplied in "
1841 "I<arg2>.  See B<capabilities>(7)."
1842 msgstr ""
1843
1844 #. type: TP
1845 #: build/C/man2/prctl.2:276
1846 #, no-wrap
1847 msgid "B<PR_GET_SECUREBITS> (since Linux 2.6.26)"
1848 msgstr ""
1849
1850 #. type: Plain text
1851 #: build/C/man2/prctl.2:282
1852 msgid ""
1853 "Return (as the function result)  the \"securebits\" flags of the calling "
1854 "thread.  See B<capabilities>(7)."
1855 msgstr ""
1856
1857 #. type: TP
1858 #: build/C/man2/prctl.2:282
1859 #, no-wrap
1860 msgid "B<PR_SET_TIMING> (since Linux 2.6.0-test4)"
1861 msgstr ""
1862
1863 #.  0
1864 #.  1
1865 #.  PR_TIMING_TIMESTAMP doesn't do anything in 2.6.26-rc8,
1866 #.  and looking at the patch history, it appears
1867 #.  that it never did anything.
1868 #. type: Plain text
1869 #: build/C/man2/prctl.2:299
1870 msgid ""
1871 "Set whether to use (normal, traditional) statistical process timing or "
1872 "accurate timestamp-based process timing, by passing B<PR_TIMING_STATISTICAL> "
1873 "or B<PR_TIMING_TIMESTAMP> to I<arg2>.  B<PR_TIMING_TIMESTAMP> is not "
1874 "currently implemented (attempting to set this mode will yield the error "
1875 "B<EINVAL>)."
1876 msgstr ""
1877
1878 #. type: TP
1879 #: build/C/man2/prctl.2:299
1880 #, no-wrap
1881 msgid "B<PR_GET_TIMING> (since Linux 2.6.0-test4)"
1882 msgstr ""
1883
1884 #. type: Plain text
1885 #: build/C/man2/prctl.2:303
1886 msgid ""
1887 "Return (as the function result) which process timing method is currently in "
1888 "use."
1889 msgstr ""
1890
1891 #. type: TP
1892 #: build/C/man2/prctl.2:303
1893 #, no-wrap
1894 msgid "B<PR_TASK_PERF_EVENTS_DISABLE> (since Linux 2.6.31)"
1895 msgstr ""
1896
1897 #. type: Plain text
1898 #: build/C/man2/prctl.2:312
1899 msgid ""
1900 "Disable all performance counters attached to the calling process, regardless "
1901 "of whether the counters were created by this process or another process.  "
1902 "Performance counters created by the calling process for other processes are "
1903 "unaffected.  For more information on performance counters, see the kernel "
1904 "source file I<tools/perf/design.txt>."
1905 msgstr ""
1906
1907 #.  commit 1d1c7ddbfab358445a542715551301b7fc363e28
1908 #. type: Plain text
1909 #: build/C/man2/prctl.2:318
1910 msgid ""
1911 "Originally called B<PR_TASK_PERF_COUNTERS_DISABLE>; renamed (with same "
1912 "numerical value)  in Linux 2.6.32."
1913 msgstr ""
1914
1915 #. type: TP
1916 #: build/C/man2/prctl.2:318
1917 #, no-wrap
1918 msgid "B<PR_TASK_PERF_EVENTS_ENABLE> (since Linux 2.6.31)"
1919 msgstr ""
1920
1921 #. type: Plain text
1922 #: build/C/man2/prctl.2:323
1923 msgid ""
1924 "The converse of B<PR_TASK_PERF_EVENTS_DISABLE>; enable performance counters "
1925 "attached to the calling process."
1926 msgstr ""
1927
1928 #.  commit 1d1c7ddbfab358445a542715551301b7fc363e28
1929 #.  commit cdd6c482c9ff9c55475ee7392ec8f672eddb7be6
1930 #. type: Plain text
1931 #: build/C/man2/prctl.2:330
1932 msgid "Originally called B<PR_TASK_PERF_COUNTERS_ENABLE>; renamed in Linux 2.6.32."
1933 msgstr ""
1934
1935 #. type: TP
1936 #: build/C/man2/prctl.2:330
1937 #, no-wrap
1938 msgid "B<PR_SET_TSC> (since Linux 2.6.26, x86 only)"
1939 msgstr ""
1940
1941 #. type: Plain text
1942 #: build/C/man2/prctl.2:343
1943 msgid ""
1944 "Set the state of the flag determining whether the timestamp counter can be "
1945 "read by the process.  Pass B<PR_TSC_ENABLE> to I<arg2> to allow it to be "
1946 "read, or B<PR_TSC_SIGSEGV> to generate a B<SIGSEGV> when the process tries "
1947 "to read the timestamp counter."
1948 msgstr ""
1949
1950 #. type: TP
1951 #: build/C/man2/prctl.2:343
1952 #, no-wrap
1953 msgid "B<PR_GET_TSC> (since Linux 2.6.26, x86 only)"
1954 msgstr ""
1955
1956 #. type: Plain text
1957 #: build/C/man2/prctl.2:349
1958 msgid ""
1959 "Return the state of the flag determining whether the timestamp counter can "
1960 "be read, in the location pointed to by I<(int\\ *) arg2>."
1961 msgstr ""
1962
1963 #. type: TP
1964 #: build/C/man2/prctl.2:349
1965 #, no-wrap
1966 msgid "B<PR_SET_UNALIGN>"
1967 msgstr ""
1968
1969 #. type: Plain text
1970 #: build/C/man2/prctl.2:359
1971 msgid ""
1972 "(Only on: ia64, since Linux 2.3.48; parisc, since Linux 2.6.15; PowerPC, "
1973 "since Linux 2.6.18; Alpha, since Linux 2.6.22)  Set unaligned access control "
1974 "bits to I<arg2>.  Pass B<PR_UNALIGN_NOPRINT> to silently fix up unaligned "
1975 "user accesses, or B<PR_UNALIGN_SIGBUS> to generate B<SIGBUS> on unaligned "
1976 "user access."
1977 msgstr ""
1978
1979 #. type: TP
1980 #: build/C/man2/prctl.2:359
1981 #, no-wrap
1982 msgid "B<PR_GET_UNALIGN>"
1983 msgstr ""
1984
1985 #. type: Plain text
1986 #: build/C/man2/prctl.2:366
1987 msgid ""
1988 "(see B<PR_SET_UNALIGN> for information on versions and architectures)  "
1989 "Return unaligned access control bits, in the location pointed to by I<(int\\ "
1990 "*) arg2>."
1991 msgstr ""
1992
1993 #. type: TP
1994 #: build/C/man2/prctl.2:366
1995 #, no-wrap
1996 msgid "B<PR_MCE_KILL> (since Linux 2.6.32)"
1997 msgstr ""
1998
1999 #. type: Plain text
2000 #: build/C/man2/prctl.2:406
2001 msgid ""
2002 "Set the machine check memory corruption kill policy for the current thread.  "
2003 "If I<arg2> is B<PR_MCE_KILL_CLEAR>, clear the thread memory corruption kill "
2004 "policy and use the system-wide default.  (The system-wide default is defined "
2005 "by I</proc/sys/vm/memory_failure_early_kill>; see B<proc>(5).)  If I<arg2> "
2006 "is B<PR_MCE_KILL_SET>, use a thread-specific memory corruption kill policy.  "
2007 "In this case, I<arg3> defines whether the policy is I<early kill> "
2008 "(B<PR_MCE_KILL_EARLY>), I<late kill> (B<PR_MCE_KILL_LATE>), or the "
2009 "system-wide default (B<PR_MCE_KILL_DEFAULT>).  Early kill means that the "
2010 "thread receives a B<SIGBUS> signal as soon as hardware memory corruption is "
2011 "detected inside its address space.  In late kill mode, the process is only "
2012 "killed when it accesses a corrupted page.  See B<sigaction>(2)  for more "
2013 "information on the B<SIGBUS> signal.  The policy is inherited by children.  "
2014 "The remaining unused B<prctl>()  arguments must be zero for future "
2015 "compatibility."
2016 msgstr ""
2017
2018 #. type: TP
2019 #: build/C/man2/prctl.2:406
2020 #, no-wrap
2021 msgid "B<PR_MCE_KILL_GET> (since Linux 2.6.32)"
2022 msgstr ""
2023
2024 #. type: Plain text
2025 #: build/C/man2/prctl.2:412
2026 msgid ""
2027 "Return the current per-process machine check kill policy.  All unused "
2028 "B<prctl>()  arguments must be zero."
2029 msgstr ""
2030
2031 #. type: TP
2032 #: build/C/man2/prctl.2:412
2033 #, no-wrap
2034 msgid "B<PR_SET_MM> (since Linux 3.3)"
2035 msgstr ""
2036
2037 #. type: Plain text
2038 #: build/C/man2/prctl.2:432
2039 msgid ""
2040 "Modify certain kernel memory map descriptor fields of the calling process.  "
2041 "Usually these fields are set by the kernel and dynamic loader (see "
2042 "B<ld.so>(8)  for more information) and a regular application should not use "
2043 "this feature.  However, there are cases, such as self-modifying programs, "
2044 "where a program might find it useful to change its own memory map.  This "
2045 "feature is available only if the kernel is built with the "
2046 "B<CONFIG_CHECKPOINT_RESTORE> option enabled.  The calling process must have "
2047 "the B<CAP_SYS_RESOURCE> capability.  The value in I<arg2> is one of the "
2048 "options below, while I<arg3> provides a new value for the option."
2049 msgstr ""
2050
2051 #. type: TP
2052 #: build/C/man2/prctl.2:433
2053 #, no-wrap
2054 msgid "B<PR_SET_MM_START_CODE>"
2055 msgstr ""
2056
2057 #. type: Plain text
2058 #: build/C/man2/prctl.2:442
2059 msgid ""
2060 "Set the address above which the program text can run.  The corresponding "
2061 "memory area must be readable and executable, but not writable or sharable "
2062 "(see B<mprotect>(2)  and B<mmap>(2)  for more information)."
2063 msgstr ""
2064
2065 #. type: TP
2066 #: build/C/man2/prctl.2:442
2067 #, no-wrap
2068 msgid "B<PR_SET_MM_END_CODE>"
2069 msgstr ""
2070
2071 #. type: Plain text
2072 #: build/C/man2/prctl.2:447
2073 msgid ""
2074 "Set the address below which the program text can run.  The corresponding "
2075 "memory area must be readable and executable, but not writable or sharable."
2076 msgstr ""
2077
2078 #. type: TP
2079 #: build/C/man2/prctl.2:447
2080 #, no-wrap
2081 msgid "B<PR_SET_MM_START_DATA>"
2082 msgstr ""
2083
2084 #. type: Plain text
2085 #: build/C/man2/prctl.2:453
2086 msgid ""
2087 "Set the address above which initialized and uninitialized (bss) data are "
2088 "placed.  The corresponding memory area must be readable and writable, but "
2089 "not executable or sharable."
2090 msgstr ""
2091
2092 #. type: TP
2093 #: build/C/man2/prctl.2:453
2094 #, no-wrap
2095 msgid "B<PR_SET_MM_END_DATA>"
2096 msgstr ""
2097
2098 #. type: Plain text
2099 #: build/C/man2/prctl.2:459
2100 msgid ""
2101 "Set the address below which initialized and uninitialized (bss) data are "
2102 "placed.  The corresponding memory area must be readable and writable, but "
2103 "not executable or sharable."
2104 msgstr ""
2105
2106 #. type: TP
2107 #: build/C/man2/prctl.2:459
2108 #, no-wrap
2109 msgid "B<PR_SET_MM_START_STACK>"
2110 msgstr ""
2111
2112 #. type: Plain text
2113 #: build/C/man2/prctl.2:463
2114 msgid ""
2115 "Set the start address of the stack.  The corresponding memory area must be "
2116 "readable and writable."
2117 msgstr ""
2118
2119 #. type: TP
2120 #: build/C/man2/prctl.2:463
2121 #, no-wrap
2122 msgid "B<PR_SET_MM_START_BRK>"
2123 msgstr ""
2124
2125 #. type: Plain text
2126 #: build/C/man2/prctl.2:475
2127 msgid ""
2128 "Set the address above which the program heap can be expanded with B<brk>(2)  "
2129 "call.  The address must be greater than the ending address of the current "
2130 "program data segment.  In addition, the combined size of the resulting heap "
2131 "and the size of the data segment can't exceed the B<RLIMIT_DATA> resource "
2132 "limit (see B<setrlimit>(2))."
2133 msgstr ""
2134
2135 #. type: TP
2136 #: build/C/man2/prctl.2:475
2137 #, no-wrap
2138 msgid "B<PR_SET_MM_BRK>"
2139 msgstr ""
2140
2141 #.  FIXME The following (until ========) is not yet in mainline kernel,
2142 #.  so commented out for the moment.
2143 #.  .TP
2144 #.  .BR PR_SET_MM_ARG_START
2145 #.  Set the address above which the program command line is placed.
2146 #.  .TP
2147 #.  .BR PR_SET_MM_ARG_END
2148 #.  Set the address below which the program command line is placed.
2149 #.  .TP
2150 #.  .BR PR_SET_MM_ENV_START
2151 #.  Set the address above which the program environment is placed.
2152 #.  .TP
2153 #.  .BR PR_SET_MM_ENV_END
2154 #.  Set the address below which the program environment is placed.
2155 #.  .IP
2156 #.  The address passed with
2157 #.  .BR PR_SET_MM_ARG_START ,
2158 #.  .BR PR_SET_MM_ARG_END ,
2159 #.  .BR PR_SET_MM_ENV_START ,
2160 #.  and
2161 #.  .BR PR_SET_MM_ENV_END
2162 #.  should belong to a process stack area.
2163 #.  Thus, the corresponding memory area must be readable, writable, and
2164 #.  (depending on the kernel configuration) have the
2165 #.  .BR MAP_GROWSDOWN
2166 #.  attribute set (see
2167 #.  .BR mmap (2)).
2168 #.  .TP
2169 #.  .BR PR_SET_MM_AUXV
2170 #.  Set a new auxiliary vector.
2171 #.  The
2172 #.  .I arg3
2173 #.  argument should provide the address of the vector.
2174 #.  The
2175 #.  .I arg4
2176 #.  is the size of the vector.
2177 #.  .TP
2178 #.  .BR PR_SET_MM_EXE_FILE
2179 #.  Supersede the
2180 #.  .IR /proc/pid/exe
2181 #.  symbolic link with a new one pointing to a new executable file
2182 #.  identified by the file descriptor provided in
2183 #.  .I arg3
2184 #.  argument.
2185 #.  The file descriptor should be obtained with a regular
2186 #.  .BR open (2)
2187 #.  call.
2188 #.  .IP
2189 #.  To change the symbolic link, one needs to unmap all existing
2190 #.  executable memory areas, including those created by the kernel itself
2191 #.  (for example the kernel usually creates at least one executable
2192 #.  memory area for the ELF
2193 #.  .IR .text
2194 #.  section).
2195 #.  .IP
2196 #.  The second limitation is that such transitions can be done only once
2197 #.  in a process life time.
2198 #.  Any further attempts will be rejected.
2199 #.  This should help system administrators to monitor unusual
2200 #.  symbolic-link transitions over all process running in a system.
2201 #.  ========== END FIXME
2202 #. type: Plain text
2203 #: build/C/man2/prctl.2:544
2204 msgid ""
2205 "Set the current B<brk>(2)  value.  The requirements for the address are the "
2206 "same as for the B<PR_SET_MM_START_BRK> option."
2207 msgstr ""
2208
2209 #. type: Plain text
2210 #: build/C/man2/prctl.2:563
2211 msgid ""
2212 "On success, B<PR_GET_DUMPABLE>, B<PR_GET_KEEPCAPS>, B<PR_CAPBSET_READ>, "
2213 "B<PR_GET_TIMING>, B<PR_GET_SECUREBITS>, B<PR_MCE_KILL_GET>, and (if it "
2214 "returns)  B<PR_GET_SECCOMP> return the nonnegative values described above.  "
2215 "All other I<option> values return 0 on success.  On error, -1 is returned, "
2216 "and I<errno> is set appropriately."
2217 msgstr ""
2218
2219 #. type: Plain text
2220 #: build/C/man2/prctl.2:568
2221 msgid "I<arg2> is an invalid address."
2222 msgstr ""
2223
2224 #. type: Plain text
2225 #: build/C/man2/prctl.2:573
2226 msgid "The value of I<option> is not recognized."
2227 msgstr ""
2228
2229 #. type: Plain text
2230 #: build/C/man2/prctl.2:585
2231 msgid ""
2232 "I<option> is B<PR_MCE_KILL> or B<PR_MCE_KILL_GET> or B<PR_SET_MM>, and "
2233 "unused B<prctl>()  arguments were not specified as zero."
2234 msgstr ""
2235
2236 #. type: Plain text
2237 #: build/C/man2/prctl.2:590
2238 msgid "I<arg2> is not valid value for this I<option>."
2239 msgstr ""
2240
2241 #. type: Plain text
2242 #: build/C/man2/prctl.2:599
2243 msgid ""
2244 "I<option> is B<PR_SET_SECCOMP> or B<PR_SET_SECCOMP>, and the kernel was not "
2245 "configured with B<CONFIG_SECCOMP>."
2246 msgstr ""
2247
2248 #. type: Plain text
2249 #: build/C/man2/prctl.2:605
2250 msgid "I<option> is B<PR_SET_MM>, and one of the following is true"
2251 msgstr ""
2252
2253 #. type: Plain text
2254 #: build/C/man2/prctl.2:611
2255 msgid "I<arg4> or I<arg5> is nonzero;"
2256 msgstr ""
2257
2258 #. type: Plain text
2259 #: build/C/man2/prctl.2:616
2260 msgid ""
2261 "I<arg3> is greater than B<TASK_SIZE> (the limit on the size of the user "
2262 "address space for this architecture);"
2263 msgstr ""
2264
2265 #. type: Plain text
2266 #: build/C/man2/prctl.2:626
2267 msgid ""
2268 "I<arg2> is B<PR_SET_MM_START_CODE>, B<PR_SET_MM_END_CODE>, "
2269 "B<PR_SET_MM_START_DATA>, B<PR_SET_MM_END_DATA>, or B<PR_SET_MM_START_STACK,> "
2270 "and the permissions of the corresponding memory area are not as required;"
2271 msgstr ""
2272
2273 #. type: Plain text
2274 #: build/C/man2/prctl.2:638
2275 msgid ""
2276 "I<arg2> is B<PR_SET_MM_START_BRK> or B<PR_SET_MM_BRK>, and I<arg3> is less "
2277 "than or equal to the end of the data segment or specifies a value that would "
2278 "cause the B<RLIMIT_DATA> resource limit to be exceeded."
2279 msgstr ""
2280
2281 #. type: Plain text
2282 #: build/C/man2/prctl.2:651
2283 msgid ""
2284 "I<option> is B<PR_SET_SECUREBITS>, and the caller does not have the "
2285 "B<CAP_SETPCAP> capability, or tried to unset a \"locked\" flag, or tried to "
2286 "set a flag whose corresponding locked flag was set (see B<capabilities>(7))."
2287 msgstr ""
2288
2289 #. type: Plain text
2290 #: build/C/man2/prctl.2:661
2291 msgid ""
2292 "I<option> is B<PR_SET_KEEPCAPS>, and the callers's "
2293 "B<SECURE_KEEP_CAPS_LOCKED> flag is set (see B<capabilities>(7))."
2294 msgstr ""
2295
2296 #. type: Plain text
2297 #: build/C/man2/prctl.2:669
2298 msgid ""
2299 "I<option> is B<PR_CAPBSET_DROP>, and the caller does not have the "
2300 "B<CAP_SETPCAP> capability."
2301 msgstr ""
2302
2303 #.  FIXME The following (until ========) is not yet in mainline kernel,
2304 #.  so commented out for the moment.
2305 #.  .TP
2306 #.  .B EACCES
2307 #.  .I option
2308 #.  is
2309 #.  .BR PR_SET_MM ,
2310 #.  and
2311 #.  .I arg3
2312 #.  is
2313 #.  .BR PR_SET_MM_EXE_FILE ,
2314 #.  the file is not executable.
2315 #.  .TP
2316 #.  .B EBUSY
2317 #.  .I option
2318 #.  is
2319 #.  .BR PR_SET_MM ,
2320 #.  .I arg3
2321 #.  is
2322 #.  .BR PR_SET_MM_EXE_FILE ,
2323 #.  and this the second attempt to change the
2324 #.  .I /proc/pid/exe
2325 #.  symbolic link, which is prohibited.
2326 #.  .TP
2327 #.  .B EBADF
2328 #.  .I option
2329 #.  is
2330 #.  .BR PR_SET_MM ,
2331 #.  .I arg3
2332 #.  is
2333 #.  .BR PR_SET_MM_EXE_FILE ,
2334 #.  and the file descriptor passed in
2335 #.  .I arg4
2336 #.  is not valid.
2337 #.  ========== END FIXME
2338 #.  The following can't actually happen, because prctl() in
2339 #.  seccomp mode will cause SIGKILL.
2340 #.  .TP
2341 #.  .B EPERM
2342 #.  .I option
2343 #.  is
2344 #.  .BR PR_SET_SECCOMP ,
2345 #.  and secure computing mode is already 1.
2346 #. type: Plain text
2347 #: build/C/man2/prctl.2:720
2348 msgid ""
2349 "I<option> is B<PR_SET_MM>, and the caller does not have the "
2350 "B<CAP_SYS_RESOURCE> capability."
2351 msgstr ""
2352
2353 #.  The library interface was added in glibc 2.0.6
2354 #. type: Plain text
2355 #: build/C/man2/prctl.2:725
2356 msgid "The B<prctl>()  system call was introduced in Linux 2.1.57."
2357 msgstr ""
2358
2359 #. type: Plain text
2360 #: build/C/man2/prctl.2:732
2361 msgid ""
2362 "This call is Linux-specific.  IRIX has a B<prctl>()  system call (also "
2363 "introduced in Linux 2.1.44 as irix_prctl on the MIPS architecture), with "
2364 "prototype"
2365 msgstr ""
2366
2367 #. type: Plain text
2368 #: build/C/man2/prctl.2:734
2369 msgid "B<ptrdiff_t prctl(int >I<option>B<, int >I<arg2>B<, int >I<arg3>B<);>"
2370 msgstr ""
2371
2372 #. type: Plain text
2373 #: build/C/man2/prctl.2:739
2374 msgid ""
2375 "and options to get the maximum number of processes per user, get the maximum "
2376 "number of processors the calling process can use, find out whether a "
2377 "specified process is currently blocked, get or set the maximum stack size, "
2378 "etc."
2379 msgstr ""
2380
2381 #. type: Plain text
2382 #: build/C/man2/prctl.2:742
2383 msgid "B<signal>(2), B<core>(5)"
2384 msgstr ""
2385
2386 #. type: TH
2387 #: build/C/man3/profil.3:28
2388 #, no-wrap
2389 msgid "PROFIL"
2390 msgstr ""
2391
2392 #. type: Plain text
2393 #: build/C/man3/profil.3:31
2394 msgid "profil - execution time profile"
2395 msgstr ""
2396
2397 #. type: Plain text
2398 #: build/C/man3/profil.3:36
2399 msgid ""
2400 "B<int profil(unsigned short *>I<buf>B<, size_t >I<bufsiz>B<, size_t "
2401 ">I<offset>B<, unsigned int >I<scale>B<);>"
2402 msgstr ""
2403
2404 #. type: Plain text
2405 #: build/C/man3/profil.3:44
2406 msgid "B<profil>(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\\ E<lt>\\ 500)"
2407 msgstr ""
2408
2409 #. type: Plain text
2410 #: build/C/man3/profil.3:66
2411 msgid ""
2412 "This routine provides a means to find out in what areas your program spends "
2413 "most of its time.  The argument I<buf> points to I<bufsiz> bytes of core.  "
2414 "Every virtual 10 milliseconds, the user's program counter (PC)  is examined: "
2415 "I<offset> is subtracted and the result is multiplied by I<scale> and divided "
2416 "by 65536.  If the resulting value is less than I<bufsiz>, then the "
2417 "corresponding entry in I<buf> is incremented.  If I<buf> is NULL, profiling "
2418 "is disabled."
2419 msgstr ""
2420
2421 #. type: Plain text
2422 #: build/C/man3/profil.3:68
2423 msgid "Zero is always returned."
2424 msgstr ""
2425
2426 #. type: Plain text
2427 #: build/C/man3/profil.3:70
2428 msgid "Similar to a call in SVr4 (but not POSIX.1-2001)."
2429 msgstr ""
2430
2431 #. type: Plain text
2432 #: build/C/man3/profil.3:76
2433 msgid ""
2434 "B<profil>()  cannot be used on a program that also uses B<ITIMER_PROF> "
2435 "interval timers (see B<setitimer>(2))."
2436 msgstr ""
2437
2438 #. type: Plain text
2439 #: build/C/man3/profil.3:79
2440 msgid ""
2441 "True kernel profiling provides more accurate results.  Libc 4.4 contained a "
2442 "kernel patch providing a system call profil."
2443 msgstr ""
2444
2445 #. type: Plain text
2446 #: build/C/man3/profil.3:84
2447 msgid "B<gprof>(1), B<setitimer>(2), B<sigaction>(2), B<signal>(2)"
2448 msgstr ""
2449
2450 #. type: TH
2451 #: build/C/man3/psignal.3:28
2452 #, no-wrap
2453 msgid "PSIGNAL"
2454 msgstr ""
2455
2456 #. type: TH
2457 #: build/C/man3/psignal.3:28
2458 #, no-wrap
2459 msgid "2010-10-06"
2460 msgstr ""
2461
2462 #. type: TH
2463 #: build/C/man3/psignal.3:28 build/C/man3/raise.3:27 build/C/man7/sigevent.7:24
2464 #, no-wrap
2465 msgid "GNU"
2466 msgstr ""
2467
2468 #. type: Plain text
2469 #: build/C/man3/psignal.3:31
2470 msgid "psignal, psiginfo - print signal message"
2471 msgstr ""
2472
2473 #. type: Plain text
2474 #: build/C/man3/psignal.3:37
2475 #, no-wrap
2476 msgid ""
2477 "B<void psignal(int >I<sig>B<, const char *>I<s>B<);>\n"
2478 "B<void psiginfo(const siginfo_t *>I<pinfo>B<, const char *>I<s>B<);>\n"
2479 msgstr ""
2480
2481 #. type: Plain text
2482 #: build/C/man3/psignal.3:39
2483 #, no-wrap
2484 msgid "B<extern const char *const >I<sys_siglist>B<[];>\n"
2485 msgstr ""
2486
2487 #. type: Plain text
2488 #: build/C/man3/psignal.3:48
2489 msgid "B<psignal>(): _SVID_SOURCE || _BSD_SOURCE"
2490 msgstr ""
2491
2492 #. type: Plain text
2493 #: build/C/man3/psignal.3:51
2494 msgid ""
2495 "B<psiginfo>(): _XOPEN_SOURCE\\ E<gt>=\\ 700 || _POSIX_C_SOURCE\\ E<gt>=\\ "
2496 "200809L"
2497 msgstr ""
2498
2499 #. type: Plain text
2500 #: build/C/man3/psignal.3:54
2501 msgid "I<sys_siglist>: _BSD_SOURCE"
2502 msgstr ""
2503
2504 #. type: Plain text
2505 #: build/C/man3/psignal.3:63
2506 msgid ""
2507 "The B<psignal>()  function displays a message on I<stderr> consisting of the "
2508 "string I<s>, a colon, a space, a string describing the signal number I<sig>, "
2509 "and a trailing newline.  If the string I<s> is NULL or empty, the colon and "
2510 "space are omitted.  If I<sig> is invalid, the message displayed will "
2511 "indicate an unknown signal."
2512 msgstr ""
2513
2514 #. type: Plain text
2515 #: build/C/man3/psignal.3:84
2516 msgid ""
2517 "The B<psiginfo>()  function is like B<psignal>(), except that it displays "
2518 "information about the signal described by I<pinfo>, which should point to a "
2519 "valid I<siginfo_t> structure.  As well as the signal description, "
2520 "B<psiginfo>()  displays information about the origin of the signal, and "
2521 "other information relevant to the signal (e.g., the relevant memory address "
2522 "for hardware-generated signals, the child process ID for B<SIGCHLD>, and the "
2523 "user ID and process ID of the sender, for signals set using B<kill>(2)  or "
2524 "B<sigqueue>(3))."
2525 msgstr ""
2526
2527 #. type: Plain text
2528 #: build/C/man3/psignal.3:87
2529 msgid ""
2530 "The array I<sys_siglist> holds the signal description strings indexed by "
2531 "signal number."
2532 msgstr ""
2533
2534 #. type: Plain text
2535 #: build/C/man3/psignal.3:93
2536 msgid "The B<psignal>()  and B<psiginfo>()  functions return no value."
2537 msgstr ""
2538
2539 #. type: Plain text
2540 #: build/C/man3/psignal.3:97
2541 msgid "The B<psiginfo>()  function was added to glibc in version 2.10."
2542 msgstr ""
2543
2544 #. type: Plain text
2545 #: build/C/man3/psignal.3:99
2546 msgid "POSIX.1-2008, 4.3BSD."
2547 msgstr ""
2548
2549 #. type: Plain text
2550 #: build/C/man3/psignal.3:103
2551 msgid "In glibc versions up to 2.12, B<psiginfo>()  had the following bugs:"
2552 msgstr ""
2553
2554 #.  FIXME http://sourceware.org/bugzilla/show_bug.cgi?id=12107
2555 #.  Reportedly now fixed; check glibc 2.13
2556 #. type: Plain text
2557 #: build/C/man3/psignal.3:107
2558 msgid "In some circumstances, a trailing newline is not printed."
2559 msgstr ""
2560
2561 #.  FIXME http://sourceware.org/bugzilla/show_bug.cgi?id=12108
2562 #.  Reportedly now fixed; check glibc 2.13
2563 #. type: Plain text
2564 #: build/C/man3/psignal.3:111
2565 msgid "Additional details are not displayed for real-time signals."
2566 msgstr ""
2567
2568 #. type: Plain text
2569 #: build/C/man3/psignal.3:116
2570 msgid "B<sigaction>(2), B<perror>(3), B<strsignal>(3), B<signal>(7)"
2571 msgstr ""
2572
2573 #. type: TH
2574 #: build/C/man3/raise.3:27
2575 #, no-wrap
2576 msgid "RAISE"
2577 msgstr ""
2578
2579 #. type: TH
2580 #: build/C/man3/raise.3:27
2581 #, no-wrap
2582 msgid "2012-04-20"
2583 msgstr ""
2584
2585 #. type: Plain text
2586 #: build/C/man3/raise.3:30
2587 msgid "raise - send a signal to the caller"
2588 msgstr ""
2589
2590 #. type: Plain text
2591 #: build/C/man3/raise.3:35
2592 #, no-wrap
2593 msgid "B<int raise(int >I<sig>B<);>\n"
2594 msgstr ""
2595
2596 #. type: Plain text
2597 #: build/C/man3/raise.3:41
2598 msgid ""
2599 "The B<raise>()  function sends a signal to the calling process or thread.  "
2600 "In a single-threaded program it is equivalent to"
2601 msgstr ""
2602
2603 #. type: Plain text
2604 #: build/C/man3/raise.3:45
2605 #, no-wrap
2606 msgid "kill(getpid(), sig);\n"
2607 msgstr ""
2608
2609 #. type: Plain text
2610 #: build/C/man3/raise.3:49
2611 msgid "In a multithreaded program it is equivalent to"
2612 msgstr ""
2613
2614 #. type: Plain text
2615 #: build/C/man3/raise.3:53
2616 #, no-wrap
2617 msgid "pthread_kill(pthread_self(), sig);\n"
2618 msgstr ""
2619
2620 #. type: Plain text
2621 #: build/C/man3/raise.3:59
2622 msgid ""
2623 "If the signal causes a handler to be called, B<raise>()  will only return "
2624 "after the signal handler has returned."
2625 msgstr ""
2626
2627 #. type: Plain text
2628 #: build/C/man3/raise.3:62
2629 msgid "B<raise>()  returns 0 on success, and nonzero for failure."
2630 msgstr ""
2631
2632 #. type: Plain text
2633 #: build/C/man3/raise.3:64 build/C/man2/signal.2:107
2634 msgid "C89, C99, POSIX.1-2001."
2635 msgstr ""
2636
2637 #.  2.3.2 used the obsolete tkill(), if available.
2638 #. type: Plain text
2639 #: build/C/man3/raise.3:75
2640 msgid ""
2641 "Since version 2.3.3, glibc implements B<raise>()  by calling B<tgkill>(2), "
2642 "if the kernel supports that system call.  Older glibc versions implemented "
2643 "B<raise>()  using B<kill>(2)."
2644 msgstr ""
2645
2646 #. type: Plain text
2647 #: build/C/man3/raise.3:82
2648 msgid ""
2649 "B<getpid>(2), B<kill>(2), B<sigaction>(2), B<signal>(2), B<pthread_kill>(3), "
2650 "B<signal>(7)"
2651 msgstr ""
2652
2653 #. type: TH
2654 #: build/C/man2/rt_sigqueueinfo.2:23
2655 #, no-wrap
2656 msgid "RT_SIGQUEUEINFO"
2657 msgstr ""
2658
2659 #. type: TH
2660 #: build/C/man2/rt_sigqueueinfo.2:23 build/C/man7/signal.7:44 build/C/man2/tkill.2:29
2661 #, no-wrap
2662 msgid "2011-09-18"
2663 msgstr ""
2664
2665 #. type: Plain text
2666 #: build/C/man2/rt_sigqueueinfo.2:26
2667 msgid "rt_sigqueueinfo, rt_tgsigqueueinfo - queue a signal and data"
2668 msgstr ""
2669
2670 #. type: Plain text
2671 #: build/C/man2/rt_sigqueueinfo.2:29
2672 #, no-wrap
2673 msgid ""
2674 "B<int rt_sigqueueinfo(pid_t >I<tgid>B<, int >I<sig>B<, siginfo_t "
2675 "*>I<uinfo>B<);>\n"
2676 msgstr ""
2677
2678 #. type: Plain text
2679 #: build/C/man2/rt_sigqueueinfo.2:32
2680 #, no-wrap
2681 msgid ""
2682 "B<int rt_tgsigqueueinfo(pid_t >I<tgid>B<, pid_t >I<tid>B<, int >I<sig>B<,>\n"
2683 "B<                      siginfo_t *>I<uinfo>B<);>\n"
2684 msgstr ""
2685
2686 #. type: Plain text
2687 #: build/C/man2/rt_sigqueueinfo.2:45
2688 msgid ""
2689 "The B<rt_sigqueueinfo>()  and B<rt_tgsigqueueinfo>()  system calls are the "
2690 "low-level interfaces used to send a signal plus data to a process or "
2691 "thread.  The receiver of the signal can obtain the accompanying data by "
2692 "establishing a signal handler with the B<sigaction>(2)  B<SA_SIGINFO> flag."
2693 msgstr ""
2694
2695 #. type: Plain text
2696 #: build/C/man2/rt_sigqueueinfo.2:51
2697 msgid ""
2698 "These system calls are not intended for direct application use; they are "
2699 "provided to allow the implementation of B<sigqueue>(3)  and "
2700 "B<pthread_sigqueue>(3)."
2701 msgstr ""
2702
2703 #. type: Plain text
2704 #: build/C/man2/rt_sigqueueinfo.2:63
2705 msgid ""
2706 "The B<rt_sigqueueinfo>()  system call sends the signal I<sig> to the thread "
2707 "group with the ID I<tgid>.  (The term \"thread group\" is synonymous with "
2708 "\"process\", and I<tid> corresponds to the traditional UNIX process ID.)  "
2709 "The signal will be delivered to an arbitrary member of the thread group "
2710 "(i.e., one of the threads that is not currently blocking the signal)."
2711 msgstr ""
2712
2713 #. type: Plain text
2714 #: build/C/man2/rt_sigqueueinfo.2:74
2715 msgid ""
2716 "The I<uinfo> argument specifies the data to accompany the signal.  This "
2717 "argument is a pointer to a structure of type I<siginfo_t>, described in "
2718 "B<sigaction>(2)  (and defined by including I<E<lt>sigaction.hE<gt>>).  The "
2719 "caller should set the following fields in this structure:"
2720 msgstr ""
2721
2722 #. type: TP
2723 #: build/C/man2/rt_sigqueueinfo.2:74 build/C/man7/sigevent.7:86 build/C/man2/wait.2:315
2724 #, no-wrap
2725 msgid "I<si_code>"
2726 msgstr ""
2727
2728 #.  tkill(2) or
2729 #. type: Plain text
2730 #: build/C/man2/rt_sigqueueinfo.2:90
2731 msgid ""
2732 "This must be one of the B<SI_*> codes in the kernel source file "
2733 "I<include/asm-generic/siginfo.h>, with the restriction that the code must be "
2734 "negative (i.e., cannot be B<SI_USER>, which is used by the kernel to "
2735 "indicate a signal sent by B<kill>(2))  and cannot (since Linux 2.6.39) be "
2736 "B<SI_TKILL> (which is used by the kernel to indicate a signal sent using "
2737 "B<tgkill>(2))."
2738 msgstr ""
2739
2740 #. type: TP
2741 #: build/C/man2/rt_sigqueueinfo.2:90 build/C/man2/wait.2:294
2742 #, no-wrap
2743 msgid "I<si_pid>"
2744 msgstr ""
2745
2746 #. type: Plain text
2747 #: build/C/man2/rt_sigqueueinfo.2:94
2748 msgid "This should be set to a process ID, typically the process ID of the sender."
2749 msgstr ""
2750
2751 #. type: TP
2752 #: build/C/man2/rt_sigqueueinfo.2:94 build/C/man2/wait.2:297
2753 #, no-wrap
2754 msgid "I<si_uid>"
2755 msgstr ""
2756
2757 #. type: Plain text
2758 #: build/C/man2/rt_sigqueueinfo.2:98
2759 msgid "This should be set to a user ID, typically the real user ID of the sender."
2760 msgstr ""
2761
2762 #. type: TP
2763 #: build/C/man2/rt_sigqueueinfo.2:98 build/C/man7/sigevent.7:94
2764 #, no-wrap
2765 msgid "I<si_value>"
2766 msgstr ""
2767
2768 #. type: Plain text
2769 #: build/C/man2/rt_sigqueueinfo.2:105
2770 msgid ""
2771 "This field contains the user data to accompany the signal.  For more "
2772 "information, see the description of the last (I<union sigval>)  argument of "
2773 "B<sigqueue>(3)."
2774 msgstr ""
2775
2776 #. type: Plain text
2777 #: build/C/man2/rt_sigqueueinfo.2:112
2778 msgid ""
2779 "Internally, the kernel sets the I<si_signo> field to the value specified in "
2780 "I<sig>, so that the receiver of the signal can also obtain the signal number "
2781 "via that field."
2782 msgstr ""
2783
2784 #. type: Plain text
2785 #: build/C/man2/rt_sigqueueinfo.2:124
2786 msgid ""
2787 "The B<rt_tgsigqueueinfo>()  system call is like B<rt_sigqueueinfo>(), but "
2788 "sends the signal and data to the single thread specified by the combination "
2789 "of I<tgid>, a thread group ID, and I<tid>, a thread in that thread group."
2790 msgstr ""
2791
2792 #. type: Plain text
2793 #: build/C/man2/rt_sigqueueinfo.2:129
2794 msgid ""
2795 "On success, these system calls return 0.  On error, they return -1 and "
2796 "I<errno> is set to indicate the error."
2797 msgstr ""
2798
2799 #. type: TP
2800 #: build/C/man2/rt_sigqueueinfo.2:130 build/C/man3/sigqueue.3:90 build/C/man2/sigwaitinfo.2:108 build/C/man2/timer_create.2:174
2801 #, no-wrap
2802 msgid "B<EAGAIN>"
2803 msgstr ""
2804
2805 #. type: Plain text
2806 #: build/C/man2/rt_sigqueueinfo.2:136 build/C/man3/sigqueue.3:96
2807 msgid ""
2808 "The limit of signals which may be queued has been reached.  (See "
2809 "B<signal>(7)  for further information.)"
2810 msgstr ""
2811
2812 #. type: Plain text
2813 #: build/C/man2/rt_sigqueueinfo.2:143
2814 msgid "I<sig>, I<tgid>, or I<tid> was invalid."
2815 msgstr ""
2816
2817 #. type: Plain text
2818 #: build/C/man2/rt_sigqueueinfo.2:151
2819 msgid ""
2820 "The caller does not have permission to send the signal to the target.  For "
2821 "the required permissions, see B<kill>(2).  Or: I<uinfo-E<gt>si_code> is "
2822 "invalid."
2823 msgstr ""
2824
2825 #. type: Plain text
2826 #: build/C/man2/rt_sigqueueinfo.2:157
2827 msgid "B<rt_sigqueueinfo>(): No thread group matching I<tgid> was found."
2828 msgstr ""
2829
2830 #. type: Plain text
2831 #: build/C/man2/rt_sigqueueinfo.2:164
2832 msgid "B<rt_tgsigqueinfo>(): No thread matching I<tgid> and I<tid> was found."
2833 msgstr ""
2834
2835 #. type: Plain text
2836 #: build/C/man2/rt_sigqueueinfo.2:171
2837 msgid ""
2838 "The B<rt_sigqueueinfo>()  system call was added to Linux in version 2.2.  "
2839 "The B<rt_tgsigqueueinfo>()  system call was added to Linux in version "
2840 "2.6.31."
2841 msgstr ""
2842
2843 #. type: Plain text
2844 #: build/C/man2/rt_sigqueueinfo.2:173 build/C/man2/sgetmask.2:63 build/C/man2/timerfd_create.2:372
2845 msgid "These system calls are Linux-specific."
2846 msgstr ""
2847
2848 #. type: Plain text
2849 #: build/C/man2/rt_sigqueueinfo.2:178
2850 msgid ""
2851 "Since these system calls are not intended for application use, there are no "
2852 "glibc wrapper functions; use B<syscall>(2)  in the unlikely case that you "
2853 "want to call them directly."
2854 msgstr ""
2855
2856 #. type: Plain text
2857 #: build/C/man2/rt_sigqueueinfo.2:183
2858 msgid ""
2859 "As with B<kill>(2), the null signal (0) can be used to check if the "
2860 "specified process or thread exists."
2861 msgstr ""
2862
2863 #. type: Plain text
2864 #: build/C/man2/rt_sigqueueinfo.2:191
2865 msgid ""
2866 "B<kill>(2), B<sigaction>(2), B<sigprocmask>(2), B<tgkill>(2), "
2867 "B<pthread_sigqueue>(3), B<sigqueue>(3), B<signal>(7)"
2868 msgstr ""
2869
2870 #. type: TH
2871 #: build/C/man2/sgetmask.2:24
2872 #, no-wrap
2873 msgid "SGETMASK"
2874 msgstr ""
2875
2876 #. type: TH
2877 #: build/C/man2/sgetmask.2:24
2878 #, no-wrap
2879 msgid "2007-07-05"
2880 msgstr ""
2881
2882 #. type: Plain text
2883 #: build/C/man2/sgetmask.2:27
2884 msgid "sgetmask, ssetmask - manipulation of signal mask (obsolete)"
2885 msgstr ""
2886
2887 #. type: Plain text
2888 #: build/C/man2/sgetmask.2:29
2889 msgid "B<long sgetmask(void);>"
2890 msgstr ""
2891
2892 #. type: Plain text
2893 #: build/C/man2/sgetmask.2:31
2894 msgid "B<long ssetmask(long >I<newmask>B<);>"
2895 msgstr ""
2896
2897 #. type: Plain text
2898 #: build/C/man2/sgetmask.2:37
2899 msgid ""
2900 "These system calls are obsolete.  I<Do not use them>; use B<sigprocmask>(2)  "
2901 "instead."
2902 msgstr ""
2903
2904 #. type: Plain text
2905 #: build/C/man2/sgetmask.2:40
2906 msgid "B<sgetmask>()  returns the signal mask of the calling process."
2907 msgstr ""
2908
2909 #. type: Plain text
2910 #: build/C/man2/sgetmask.2:45
2911 msgid ""
2912 "B<ssetmask>()  sets the signal mask of the calling process to the value "
2913 "given in I<newmask>.  The previous signal mask is returned."
2914 msgstr ""
2915
2916 #. type: Plain text
2917 #: build/C/man2/sgetmask.2:54
2918 msgid ""
2919 "The signal masks dealt with by these two system calls are plain bit masks "
2920 "(unlike the I<sigset_t> used by B<sigprocmask>(2)); use B<sigmask>(3)  to "
2921 "create and inspect these masks."
2922 msgstr ""
2923
2924 #. type: Plain text
2925 #: build/C/man2/sgetmask.2:59
2926 msgid ""
2927 "B<sgetmask>()  always successfully returns the signal mask.  B<ssetmask>()  "
2928 "always succeeds, and returns the previous signal mask."
2929 msgstr ""
2930
2931 #. type: Plain text
2932 #: build/C/man2/sgetmask.2:61
2933 msgid "These system calls always succeed."
2934 msgstr ""
2935
2936 #. type: Plain text
2937 #: build/C/man2/sgetmask.2:66
2938 msgid "Glibc does not provide wrappers for these system calls; use B<syscall>(2)."
2939 msgstr ""
2940
2941 #. type: Plain text
2942 #: build/C/man2/sgetmask.2:69
2943 msgid ""
2944 "These system calls are unaware of signal numbers greater than 31 (i.e., "
2945 "real-time signals)."
2946 msgstr ""
2947
2948 #. type: Plain text
2949 #: build/C/man2/sgetmask.2:74
2950 msgid "It is not possible to block B<SIGSTOP> or B<SIGKILL>."
2951 msgstr ""
2952
2953 #. type: Plain text
2954 #: build/C/man2/sgetmask.2:77
2955 msgid "B<sigprocmask>(2), B<signal>(7)"
2956 msgstr ""
2957
2958 #. type: TH
2959 #: build/C/man2/sigaction.2:45
2960 #, no-wrap
2961 msgid "SIGACTION"
2962 msgstr ""
2963
2964 #. type: TH
2965 #: build/C/man2/sigaction.2:45
2966 #, no-wrap
2967 msgid "2012-04-26"
2968 msgstr ""
2969
2970 #. type: Plain text
2971 #: build/C/man2/sigaction.2:48
2972 msgid "sigaction - examine and change a signal action"
2973 msgstr ""
2974
2975 #. type: Plain text
2976 #: build/C/man2/sigaction.2:54
2977 #, no-wrap
2978 msgid ""
2979 "B<int sigaction(int >I<signum>B<, const struct sigaction *>I<act>B<,>\n"
2980 "B<              struct sigaction *>I<oldact>B<);>\n"
2981 msgstr ""
2982
2983 #. type: Plain text
2984 #: build/C/man2/sigaction.2:64
2985 msgid ""
2986 "B<sigaction>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
2987 "_POSIX_SOURCE"
2988 msgstr ""
2989
2990 #. type: Plain text
2991 #: build/C/man2/sigaction.2:73
2992 msgid ""
2993 "The B<sigaction>()  system call is used to change the action taken by a "
2994 "process on receipt of a specific signal.  (See B<signal>(7)  for an overview "
2995 "of signals.)"
2996 msgstr ""
2997
2998 #. type: Plain text
2999 #: build/C/man2/sigaction.2:79
3000 msgid ""
3001 "I<signum> specifies the signal and can be any valid signal except B<SIGKILL> "
3002 "and B<SIGSTOP>."
3003 msgstr ""
3004
3005 #. type: Plain text
3006 #: build/C/man2/sigaction.2:90
3007 msgid ""
3008 "If I<act> is non-NULL, the new action for signal I<signum> is installed from "
3009 "I<act>.  If I<oldact> is non-NULL, the previous action is saved in "
3010 "I<oldact>."
3011 msgstr ""
3012
3013 #. type: Plain text
3014 #: build/C/man2/sigaction.2:94
3015 msgid "The I<sigaction> structure is defined as something like:"
3016 msgstr ""
3017
3018 #. type: Plain text
3019 #: build/C/man2/sigaction.2:104
3020 #, no-wrap
3021 msgid ""
3022 "struct sigaction {\n"
3023 "    void     (*sa_handler)(int);\n"
3024 "    void     (*sa_sigaction)(int, siginfo_t *, void *);\n"
3025 "    sigset_t   sa_mask;\n"
3026 "    int        sa_flags;\n"
3027 "    void     (*sa_restorer)(void);\n"
3028 "};\n"
3029 msgstr ""
3030
3031 #. type: Plain text
3032 #: build/C/man2/sigaction.2:111
3033 msgid ""
3034 "On some architectures a union is involved: do not assign to both "
3035 "I<sa_handler> and I<sa_sigaction>."
3036 msgstr ""
3037
3038 #. type: Plain text
3039 #: build/C/man2/sigaction.2:118
3040 msgid ""
3041 "The I<sa_restorer> element is obsolete and should not be used.  POSIX does "
3042 "not specify a I<sa_restorer> element."
3043 msgstr ""
3044
3045 #. type: Plain text
3046 #: build/C/man2/sigaction.2:128
3047 msgid ""
3048 "I<sa_handler> specifies the action to be associated with I<signum> and may "
3049 "be B<SIG_DFL> for the default action, B<SIG_IGN> to ignore this signal, or a "
3050 "pointer to a signal handling function.  This function receives the signal "
3051 "number as its only argument."
3052 msgstr ""
3053
3054 #. type: Plain text
3055 #: build/C/man2/sigaction.2:150
3056 msgid ""
3057 "If B<SA_SIGINFO> is specified in I<sa_flags>, then I<sa_sigaction> (instead "
3058 "of I<sa_handler>)  specifies the signal-handling function for I<signum>.  "
3059 "This function receives the signal number as its first argument, a pointer to "
3060 "a I<siginfo_t> as its second argument and a pointer to a I<ucontext_t> (cast "
3061 "to I<void\\ *>) as its third argument.  (Commonly, the handler function "
3062 "doesn't make any use of the third argument.  See B<getcontext>(2)  for "
3063 "further information about I<ucontext_t>.)"
3064 msgstr ""
3065
3066 #. type: Plain text
3067 #: build/C/man2/sigaction.2:160
3068 msgid ""
3069 "I<sa_mask> specifies a mask of signals which should be blocked (i.e., added "
3070 "to the signal mask of the thread in which the signal handler is invoked)  "
3071 "during execution of the signal handler.  In addition, the signal which "
3072 "triggered the handler will be blocked, unless the B<SA_NODEFER> flag is "
3073 "used."
3074 msgstr ""
3075
3076 #. type: Plain text
3077 #: build/C/man2/sigaction.2:164
3078 msgid ""
3079 "I<sa_flags> specifies a set of flags which modify the behavior of the "
3080 "signal.  It is formed by the bitwise OR of zero or more of the following:"
3081 msgstr ""
3082
3083 #. type: TP
3084 #: build/C/man2/sigaction.2:165
3085 #, no-wrap
3086 msgid "B<SA_NOCLDSTOP>"
3087 msgstr ""
3088
3089 #. type: Plain text
3090 #: build/C/man2/sigaction.2:182
3091 msgid ""
3092 "If I<signum> is B<SIGCHLD>, do not receive notification when child processes "
3093 "stop (i.e., when they receive one of B<SIGSTOP>, B<SIGTSTP>, B<SIGTTIN> or "
3094 "B<SIGTTOU>)  or resume (i.e., they receive B<SIGCONT>)  (see B<wait>(2)).  "
3095 "This flag is only meaningful when establishing a handler for B<SIGCHLD>."
3096 msgstr ""
3097
3098 #. type: TP
3099 #: build/C/man2/sigaction.2:182
3100 #, no-wrap
3101 msgid "B<SA_NOCLDWAIT> (since Linux 2.6)"
3102 msgstr ""
3103
3104 #.  To be precise: Linux 2.5.60 -- MTK
3105 #. type: Plain text
3106 #: build/C/man2/sigaction.2:196
3107 msgid ""
3108 "If I<signum> is B<SIGCHLD>, do not transform children into zombies when they "
3109 "terminate.  See also B<waitpid>(2).  This flag is only meaningful when "
3110 "establishing a handler for B<SIGCHLD>, or when setting that signal's "
3111 "disposition to B<SIG_DFL>."
3112 msgstr ""
3113
3114 #. type: Plain text
3115 #: build/C/man2/sigaction.2:208
3116 msgid ""
3117 "If the B<SA_NOCLDWAIT> flag is set when establishing a handler for "
3118 "B<SIGCHLD>, POSIX.1 leaves it unspecified whether a B<SIGCHLD> signal is "
3119 "generated when a child process terminates.  On Linux, a B<SIGCHLD> signal is "
3120 "generated in this case; on some other implementations, it is not."
3121 msgstr ""
3122
3123 #. type: TP
3124 #: build/C/man2/sigaction.2:208
3125 #, no-wrap
3126 msgid "B<SA_NODEFER>"
3127 msgstr ""
3128
3129 #. type: Plain text
3130 #: build/C/man2/sigaction.2:215
3131 msgid ""
3132 "Do not prevent the signal from being received from within its own signal "
3133 "handler.  This flag is only meaningful when establishing a signal handler.  "
3134 "B<SA_NOMASK> is an obsolete, nonstandard synonym for this flag."
3135 msgstr ""
3136
3137 #. type: TP
3138 #: build/C/man2/sigaction.2:215
3139 #, no-wrap
3140 msgid "B<SA_ONSTACK>"
3141 msgstr ""
3142
3143 #. type: Plain text
3144 #: build/C/man2/sigaction.2:221
3145 msgid ""
3146 "Call the signal handler on an alternate signal stack provided by "
3147 "B<sigaltstack>(2).  If an alternate stack is not available, the default "
3148 "stack will be used.  This flag is only meaningful when establishing a signal "
3149 "handler."
3150 msgstr ""
3151
3152 #. type: TP
3153 #: build/C/man2/sigaction.2:221
3154 #, no-wrap
3155 msgid "B<SA_RESETHAND>"
3156 msgstr ""
3157
3158 #. type: Plain text
3159 #: build/C/man2/sigaction.2:228
3160 msgid ""
3161 "Restore the signal action to the default state once the signal handler has "
3162 "been called.  This flag is only meaningful when establishing a signal "
3163 "handler.  B<SA_ONESHOT> is an obsolete, nonstandard synonym for this flag."
3164 msgstr ""
3165
3166 #. type: TP
3167 #: build/C/man2/sigaction.2:228
3168 #, no-wrap
3169 msgid "B<SA_RESTART>"
3170 msgstr ""
3171
3172 #. type: Plain text
3173 #: build/C/man2/sigaction.2:236
3174 msgid ""
3175 "Provide behavior compatible with BSD signal semantics by making certain "
3176 "system calls restartable across signals.  This flag is only meaningful when "
3177 "establishing a signal handler.  See B<signal>(7)  for a discussion of system "
3178 "call restarting."
3179 msgstr ""
3180
3181 #. type: TP
3182 #: build/C/man2/sigaction.2:236
3183 #, no-wrap
3184 msgid "B<SA_SIGINFO> (since Linux 2.2)"
3185 msgstr ""
3186
3187 #.  (The
3188 #.  .I sa_sigaction
3189 #.  field was added in Linux 2.1.86.)
3190 #. type: Plain text
3191 #: build/C/man2/sigaction.2:247
3192 msgid ""
3193 "The signal handler takes 3 arguments, not one.  In this case, "
3194 "I<sa_sigaction> should be set instead of I<sa_handler>.  This flag is only "
3195 "meaningful when establishing a signal handler."
3196 msgstr ""
3197
3198 #. type: Plain text
3199 #: build/C/man2/sigaction.2:254
3200 msgid ""
3201 "The I<siginfo_t> argument to I<sa_sigaction> is a struct with the following "
3202 "elements:"
3203 msgstr ""
3204
3205 #.  FIXME
3206 #.  si_trapno seems to be only used on SPARC and Alpha;
3207 #.  this page could use a little more detail on its purpose there.
3208 #.  In the kernel: si_tid
3209 #. type: Plain text
3210 #: build/C/man2/sigaction.2:285
3211 #, no-wrap
3212 msgid ""
3213 "siginfo_t {\n"
3214 "    int      si_signo;    /* Signal number */\n"
3215 "    int      si_errno;    /* An errno value */\n"
3216 "    int      si_code;     /* Signal code */\n"
3217 "    int      si_trapno;   /* Trap number that caused\n"
3218 "                             hardware-generated signal\n"
3219 "                             (unused on most architectures) */\n"
3220 "    pid_t    si_pid;      /* Sending process ID */\n"
3221 "    uid_t    si_uid;      /* Real user ID of sending process */\n"
3222 "    int      si_status;   /* Exit value or signal */\n"
3223 "    clock_t  si_utime;    /* User time consumed */\n"
3224 "    clock_t  si_stime;    /* System time consumed */\n"
3225 "    sigval_t si_value;    /* Signal value */\n"
3226 "    int      si_int;      /* POSIX.1b signal */\n"
3227 "    void    *si_ptr;      /* POSIX.1b signal */\n"
3228 "    int      si_overrun;  /* Timer overrun count; POSIX.1b timers */\n"
3229 "    int      si_timerid;  /* Timer ID; POSIX.1b timers */\n"
3230 "    void    *si_addr;     /* Memory location which caused fault */\n"
3231 "    long     si_band;     /* Band event (was I<int> in\n"
3232 "                             glibc 2.3.2 and earlier) */\n"
3233 "    int      si_fd;       /* File descriptor */\n"
3234 "    short    si_addr_lsb; /* Least significant bit of address\n"
3235 "                             (since kernel 2.6.32) */\n"
3236 "}\n"
3237 msgstr ""
3238
3239 #. type: Plain text
3240 #: build/C/man2/sigaction.2:294
3241 msgid ""
3242 "I<si_signo>, I<si_errno> and I<si_code> are defined for all signals.  "
3243 "(I<si_errno> is generally unused on Linux.)  The rest of the struct may be a "
3244 "union, so that one should only read the fields that are meaningful for the "
3245 "given signal:"
3246 msgstr ""
3247
3248 #. type: Plain text
3249 #: build/C/man2/sigaction.2:309
3250 msgid ""
3251 "Signals sent with B<kill>(2)  and B<sigqueue>(3)  fill in I<si_pid> and "
3252 "I<si_uid>.  In addition, signals sent with B<sigqueue>(3)  fill in I<si_int> "
3253 "and I<si_ptr> with the values specified by the sender of the signal; see "
3254 "B<sigqueue>(3)  for more details."
3255 msgstr ""
3256
3257 #. type: Plain text
3258 #: build/C/man2/sigaction.2:325
3259 msgid ""
3260 "Signals sent by POSIX.1b timers (since Linux 2.6) fill in I<si_overrun> and "
3261 "I<si_timerid>.  The I<si_timerid> field is an internal ID used by the kernel "
3262 "to identify the timer; it is not the same as the timer ID returned by "
3263 "B<timer_create>(2).  The I<si_overrun> field is the timer overrun count; "
3264 "this is the same information as is obtained by a call to "
3265 "B<timer_getoverrun>(2).  These fields are nonstandard Linux extensions."
3266 msgstr ""
3267
3268 #. type: Plain text
3269 #: build/C/man2/sigaction.2:340
3270 msgid ""
3271 "Signals sent for message queue notification (see the description of "
3272 "B<SIGEV_SIGNAL> in B<mq_notify>(3))  fill in I<si_int>/I<si_ptr>, with the "
3273 "I<sigev_value> supplied to B<mq_notify>(3); I<si_pid>, with the process ID "
3274 "of the message sender; and I<si_uid>, with the real user ID of the message "
3275 "sender."
3276 msgstr ""
3277
3278 #.  FIXME .
3279 #.  When si_utime and si_stime where originally implemented, the
3280 #.  measurement unit was HZ, which was the same as clock ticks
3281 #.  (sysconf(_SC_CLK_TCK)).  In 2.6, HZ became configurable, and
3282 #.  was *still* used as the unit to return the info these fields,
3283 #.  with the result that the field values depended on the the
3284 #.  configured HZ.  Of course, the should have been measured in
3285 #.  USER_HZ instead, so that sysconf(_SC_CLK_TCK) could be used to
3286 #.  convert to seconds.  I have a queued patch to fix this:
3287 #.  http://thread.gmane.org/gmane.linux.kernel/698061/ .
3288 #.  This patch made it into 2.6.27.
3289 #.  But note that these fields still don't return the times of
3290 #.  waited-for children (as is done by getrusage() and times()
3291 #.  and wait4()).  Solaris 8 does include child times.
3292 #. type: Plain text
3293 #: build/C/man2/sigaction.2:387
3294 msgid ""
3295 "B<SIGCHLD> fills in I<si_pid>, I<si_uid>, I<si_status>, I<si_utime> and "
3296 "I<si_stime>, providing information about the child.  The I<si_pid> field is "
3297 "the process ID of the child; I<si_uid> is the child's real user ID.  The "
3298 "I<si_status> field contains the exit status of the child (if I<si_code> is "
3299 "B<CLD_EXITED>), or the signal number that caused the process to change "
3300 "state.  The I<si_utime> and I<si_stime> contain the user and system CPU time "
3301 "used by the child process; these fields do not include the times used by "
3302 "waited-for children (unlike B<getrusage>(2)  and B<time>(2)).  In kernels up "
3303 "to 2.6, and since 2.6.27, these fields report CPU time in units of "
3304 "I<sysconf(_SC_CLK_TCK)>.  In 2.6 kernels before 2.6.27, a bug meant that "
3305 "these fields reported time in units of the (configurable) system jiffy (see "
3306 "B<time>(7))."
3307 msgstr ""
3308
3309 #.  FIXME SIGTRAP also sets the following for ptrace_notify() ?
3310 #.      info.si_code = exit_code;
3311 #.      info.si_pid = task_pid_vnr(current);
3312 #.      info.si_uid = current_uid();  /* Real UID */
3313 #. type: Plain text
3314 #: build/C/man2/sigaction.2:423
3315 msgid ""
3316 "B<SIGILL>, B<SIGFPE>, B<SIGSEGV>, B<SIGBUS>, and B<SIGTRAP> fill in "
3317 "I<si_addr> with the address of the fault.  On some architectures, these "
3318 "signals also fill in the I<si_trapno> filed.  Some suberrors of B<SIGBUS>, "
3319 "in particular B<BUS_MCEERR_AO> and B<BUS_MCEERR_AR>, also fill in "
3320 "I<si_addr_lsb>.  This field indicates the least significant bit of the "
3321 "reported address and therefore the extent of the corruption.  For example, "
3322 "if a full page was corrupted, I<si_addr_lsb> contains "
3323 "I<log2(sysconf(_SC_PAGESIZE))>.  B<BUS_MCERR_*> and I<si_addr_lsb> are "
3324 "Linux-specific extensions."
3325 msgstr ""
3326
3327 #. type: Plain text
3328 #: build/C/man2/sigaction.2:437
3329 msgid ""
3330 "B<SIGIO>/B<SIGPOLL> (the two names are synonyms on Linux)  fills in "
3331 "I<si_band> and I<si_fd>.  The I<si_band> event is a bit mask containing the "
3332 "same values as are filled in the I<revents> field by B<poll>(2).  The "
3333 "I<si_fd> field indicates the file descriptor for which the I/O event "
3334 "occurred."
3335 msgstr ""
3336
3337 #. type: Plain text
3338 #: build/C/man2/sigaction.2:444
3339 msgid ""
3340 "I<si_code> is a value (not a bit mask)  indicating why this signal was "
3341 "sent.  The following list shows the values which can be placed in I<si_code> "
3342 "for any signal, along with reason that the signal was generated."
3343 msgstr ""
3344
3345 #. type: TP
3346 #: build/C/man2/sigaction.2:445
3347 #, no-wrap
3348 msgid "B<SI_USER>"
3349 msgstr ""
3350
3351 #. type: TP
3352 #: build/C/man2/sigaction.2:448 build/C/man7/signal.7:109
3353 #, no-wrap
3354 msgid "B<kill>(2)"
3355 msgstr ""
3356
3357 #. type: TP
3358 #: build/C/man2/sigaction.2:448
3359 #, no-wrap
3360 msgid "B<SI_KERNEL>"
3361 msgstr ""
3362
3363 #. type: Plain text
3364 #: build/C/man2/sigaction.2:451
3365 msgid "Sent by the kernel."
3366 msgstr ""
3367
3368 #. type: TP
3369 #: build/C/man2/sigaction.2:451
3370 #, no-wrap
3371 msgid "B<SI_QUEUE>"
3372 msgstr ""
3373
3374 #. type: TP
3375 #: build/C/man2/sigaction.2:454 build/C/man7/signal.7:126
3376 #, no-wrap
3377 msgid "B<sigqueue>(3)"
3378 msgstr ""
3379
3380 #. type: TP
3381 #: build/C/man2/sigaction.2:454
3382 #, no-wrap
3383 msgid "B<SI_TIMER>"
3384 msgstr ""
3385
3386 #. type: Plain text
3387 #: build/C/man2/sigaction.2:457
3388 msgid "POSIX timer expired"
3389 msgstr ""
3390
3391 #. type: TP
3392 #: build/C/man2/sigaction.2:457
3393 #, no-wrap
3394 msgid "B<SI_MESGQ>"
3395 msgstr ""
3396
3397 #. type: Plain text
3398 #: build/C/man2/sigaction.2:461
3399 msgid "POSIX message queue state changed (since Linux 2.6.6); see B<mq_notify>(3)"
3400 msgstr ""
3401
3402 #. type: TP
3403 #: build/C/man2/sigaction.2:461
3404 #, no-wrap
3405 msgid "B<SI_ASYNCIO>"
3406 msgstr ""
3407
3408 #. type: Plain text
3409 #: build/C/man2/sigaction.2:464
3410 msgid "AIO completed"
3411 msgstr ""
3412
3413 #. type: TP
3414 #: build/C/man2/sigaction.2:464
3415 #, no-wrap
3416 msgid "B<SI_SIGIO>"
3417 msgstr ""
3418
3419 #. type: Plain text
3420 #: build/C/man2/sigaction.2:473
3421 msgid ""
3422 "Queued B<SIGIO> (only in kernels up to Linux 2.2; from Linux 2.4 onward "
3423 "B<SIGIO>/B<SIGPOLL> fills in I<si_code> as described below)."
3424 msgstr ""
3425
3426 #. type: TP
3427 #: build/C/man2/sigaction.2:473
3428 #, no-wrap
3429 msgid "B<SI_TKILL>"
3430 msgstr ""
3431
3432 #.  SI_DETHREAD is defined in 2.6.9 sources, but isn't implemented
3433 #.  It appears to have been an idea that was tried during 2.5.6
3434 #.  through to 2.5.24 and then was backed out.
3435 #. type: Plain text
3436 #: build/C/man2/sigaction.2:482
3437 msgid "B<tkill>(2)  or B<tgkill>(2)  (since Linux 2.4.19)"
3438 msgstr ""
3439
3440 #. type: Plain text
3441 #: build/C/man2/sigaction.2:489
3442 msgid "The following values can be placed in I<si_code> for a B<SIGILL> signal:"
3443 msgstr ""
3444
3445 #. type: TP
3446 #: build/C/man2/sigaction.2:490
3447 #, no-wrap
3448 msgid "B<ILL_ILLOPC>"
3449 msgstr ""
3450
3451 #. type: Plain text
3452 #: build/C/man2/sigaction.2:493
3453 msgid "illegal opcode"
3454 msgstr ""
3455
3456 #. type: TP
3457 #: build/C/man2/sigaction.2:493
3458 #, no-wrap
3459 msgid "B<ILL_ILLOPN>"
3460 msgstr ""
3461
3462 #. type: Plain text
3463 #: build/C/man2/sigaction.2:496
3464 msgid "illegal operand"
3465 msgstr ""
3466
3467 #. type: TP
3468 #: build/C/man2/sigaction.2:496
3469 #, no-wrap
3470 msgid "B<ILL_ILLADR>"
3471 msgstr ""
3472
3473 #. type: Plain text
3474 #: build/C/man2/sigaction.2:499
3475 msgid "illegal addressing mode"
3476 msgstr ""
3477
3478 #. type: TP
3479 #: build/C/man2/sigaction.2:499
3480 #, no-wrap
3481 msgid "B<ILL_ILLTRP>"
3482 msgstr ""
3483
3484 #. type: Plain text
3485 #: build/C/man2/sigaction.2:502
3486 msgid "illegal trap"
3487 msgstr ""
3488
3489 #. type: TP
3490 #: build/C/man2/sigaction.2:502
3491 #, no-wrap
3492 msgid "B<ILL_PRVOPC>"
3493 msgstr ""
3494
3495 #. type: Plain text
3496 #: build/C/man2/sigaction.2:505
3497 msgid "privileged opcode"
3498 msgstr ""
3499
3500 #. type: TP
3501 #: build/C/man2/sigaction.2:505
3502 #, no-wrap
3503 msgid "B<ILL_PRVREG>"
3504 msgstr ""
3505
3506 #. type: Plain text
3507 #: build/C/man2/sigaction.2:508
3508 msgid "privileged register"
3509 msgstr ""
3510
3511 #. type: TP
3512 #: build/C/man2/sigaction.2:508
3513 #, no-wrap
3514 msgid "B<ILL_COPROC>"
3515 msgstr ""
3516
3517 #. type: Plain text
3518 #: build/C/man2/sigaction.2:511
3519 msgid "coprocessor error"
3520 msgstr ""
3521
3522 #. type: TP
3523 #: build/C/man2/sigaction.2:511
3524 #, no-wrap
3525 msgid "B<ILL_BADSTK>"
3526 msgstr ""
3527
3528 #. type: Plain text
3529 #: build/C/man2/sigaction.2:514
3530 msgid "internal stack error"
3531 msgstr ""
3532
3533 #. type: Plain text
3534 #: build/C/man2/sigaction.2:521
3535 msgid "The following values can be placed in I<si_code> for a B<SIGFPE> signal:"
3536 msgstr ""
3537
3538 #. type: TP
3539 #: build/C/man2/sigaction.2:522
3540 #, no-wrap
3541 msgid "B<FPE_INTDIV>"
3542 msgstr ""
3543
3544 #. type: Plain text
3545 #: build/C/man2/sigaction.2:525
3546 msgid "integer divide by zero"
3547 msgstr ""
3548
3549 #. type: TP
3550 #: build/C/man2/sigaction.2:525
3551 #, no-wrap
3552 msgid "B<FPE_INTOVF>"
3553 msgstr ""
3554
3555 #. type: Plain text
3556 #: build/C/man2/sigaction.2:528
3557 msgid "integer overflow"
3558 msgstr ""
3559
3560 #. type: TP
3561 #: build/C/man2/sigaction.2:528
3562 #, no-wrap
3563 msgid "B<FPE_FLTDIV>"
3564 msgstr ""
3565
3566 #. type: Plain text
3567 #: build/C/man2/sigaction.2:531
3568 msgid "floating-point divide by zero"
3569 msgstr ""
3570
3571 #. type: TP
3572 #: build/C/man2/sigaction.2:531
3573 #, no-wrap
3574 msgid "B<FPE_FLTOVF>"
3575 msgstr ""
3576
3577 #. type: Plain text
3578 #: build/C/man2/sigaction.2:534
3579 msgid "floating-point overflow"
3580 msgstr ""
3581
3582 #. type: TP
3583 #: build/C/man2/sigaction.2:534
3584 #, no-wrap
3585 msgid "B<FPE_FLTUND>"
3586 msgstr ""
3587
3588 #. type: Plain text
3589 #: build/C/man2/sigaction.2:537
3590 msgid "floating-point underflow"
3591 msgstr ""
3592
3593 #. type: TP
3594 #: build/C/man2/sigaction.2:537
3595 #, no-wrap
3596 msgid "B<FPE_FLTRES>"
3597 msgstr ""
3598
3599 #. type: Plain text
3600 #: build/C/man2/sigaction.2:540
3601 msgid "floating-point inexact result"
3602 msgstr ""
3603
3604 #. type: TP
3605 #: build/C/man2/sigaction.2:540
3606 #, no-wrap
3607 msgid "B<FPE_FLTINV>"
3608 msgstr ""
3609
3610 #. type: Plain text
3611 #: build/C/man2/sigaction.2:543
3612 msgid "floating-point invalid operation"
3613 msgstr ""
3614
3615 #. type: TP
3616 #: build/C/man2/sigaction.2:543
3617 #, no-wrap
3618 msgid "B<FPE_FLTSUB>"
3619 msgstr ""
3620
3621 #. type: Plain text
3622 #: build/C/man2/sigaction.2:546
3623 msgid "subscript out of range"
3624 msgstr ""
3625
3626 #. type: Plain text
3627 #: build/C/man2/sigaction.2:553
3628 msgid "The following values can be placed in I<si_code> for a B<SIGSEGV> signal:"
3629 msgstr ""
3630
3631 #. type: TP
3632 #: build/C/man2/sigaction.2:554
3633 #, no-wrap
3634 msgid "B<SEGV_MAPERR>"
3635 msgstr ""
3636
3637 #. type: Plain text
3638 #: build/C/man2/sigaction.2:557
3639 msgid "address not mapped to object"
3640 msgstr ""
3641
3642 #. type: TP
3643 #: build/C/man2/sigaction.2:557
3644 #, no-wrap
3645 msgid "B<SEGV_ACCERR>"
3646 msgstr ""
3647
3648 #. type: Plain text
3649 #: build/C/man2/sigaction.2:560
3650 msgid "invalid permissions for mapped object"
3651 msgstr ""
3652
3653 #. type: Plain text
3654 #: build/C/man2/sigaction.2:567
3655 msgid "The following values can be placed in I<si_code> for a B<SIGBUS> signal:"
3656 msgstr ""
3657
3658 #. type: TP
3659 #: build/C/man2/sigaction.2:568
3660 #, no-wrap
3661 msgid "B<BUS_ADRALN>"
3662 msgstr ""
3663
3664 #. type: Plain text
3665 #: build/C/man2/sigaction.2:571
3666 msgid "invalid address alignment"
3667 msgstr ""
3668
3669 #. type: TP
3670 #: build/C/man2/sigaction.2:571
3671 #, no-wrap
3672 msgid "B<BUS_ADRERR>"
3673 msgstr ""
3674
3675 #. type: Plain text
3676 #: build/C/man2/sigaction.2:574
3677 msgid "nonexistent physical address"
3678 msgstr ""
3679
3680 #. type: TP
3681 #: build/C/man2/sigaction.2:574
3682 #, no-wrap
3683 msgid "B<BUS_OBJERR>"
3684 msgstr ""
3685
3686 #. type: Plain text
3687 #: build/C/man2/sigaction.2:577
3688 msgid "object-specific hardware error"
3689 msgstr ""
3690
3691 #. type: TP
3692 #: build/C/man2/sigaction.2:577
3693 #, no-wrap
3694 msgid "B<BUS_MCEERR_AR> (since Linux 2.6.32)"
3695 msgstr ""
3696
3697 #. type: Plain text
3698 #: build/C/man2/sigaction.2:580
3699 msgid "Hardware memory error consumed on a machine check; action required."
3700 msgstr ""
3701
3702 #. type: TP
3703 #: build/C/man2/sigaction.2:580
3704 #, no-wrap
3705 msgid "B<BUS_MCEERR_AO> (since Linux 2.6.32)"
3706 msgstr ""
3707
3708 #. type: Plain text
3709 #: build/C/man2/sigaction.2:583
3710 msgid "Hardware memory error detected in process but not consumed; action optional."
3711 msgstr ""
3712
3713 #. type: Plain text
3714 #: build/C/man2/sigaction.2:590
3715 msgid "The following values can be placed in I<si_code> for a B<SIGTRAP> signal:"
3716 msgstr ""
3717
3718 #. type: TP
3719 #: build/C/man2/sigaction.2:591
3720 #, no-wrap
3721 msgid "B<TRAP_BRKPT>"
3722 msgstr ""
3723
3724 #. type: Plain text
3725 #: build/C/man2/sigaction.2:594
3726 msgid "process breakpoint"
3727 msgstr ""
3728
3729 #. type: TP
3730 #: build/C/man2/sigaction.2:594
3731 #, no-wrap
3732 msgid "B<TRAP_TRACE>"
3733 msgstr ""
3734
3735 #. type: Plain text
3736 #: build/C/man2/sigaction.2:597
3737 msgid "process trace trap"
3738 msgstr ""
3739
3740 #. type: TP
3741 #: build/C/man2/sigaction.2:597
3742 #, no-wrap
3743 msgid "B<TRAP_BRANCH> (since Linux 2.4)"
3744 msgstr ""
3745
3746 #. type: Plain text
3747 #: build/C/man2/sigaction.2:600
3748 msgid "process taken branch trap"
3749 msgstr ""
3750
3751 #. type: TP
3752 #: build/C/man2/sigaction.2:600
3753 #, no-wrap
3754 msgid "B<TRAP_HWBKPT> (since Linux 2.4)"
3755 msgstr ""
3756
3757 #. type: Plain text
3758 #: build/C/man2/sigaction.2:603
3759 msgid "hardware breakpoint/watchpoint"
3760 msgstr ""
3761
3762 #. type: Plain text
3763 #: build/C/man2/sigaction.2:610
3764 msgid "The following values can be placed in I<si_code> for a B<SIGCHLD> signal:"
3765 msgstr ""
3766
3767 #. type: TP
3768 #: build/C/man2/sigaction.2:611
3769 #, no-wrap
3770 msgid "B<CLD_EXITED>"
3771 msgstr ""
3772
3773 #. type: Plain text
3774 #: build/C/man2/sigaction.2:614
3775 msgid "child has exited"
3776 msgstr ""
3777
3778 #. type: TP
3779 #: build/C/man2/sigaction.2:614
3780 #, no-wrap
3781 msgid "B<CLD_KILLED>"
3782 msgstr ""
3783
3784 #. type: Plain text
3785 #: build/C/man2/sigaction.2:617
3786 msgid "child was killed"
3787 msgstr ""
3788
3789 #. type: TP
3790 #: build/C/man2/sigaction.2:617
3791 #, no-wrap
3792 msgid "B<CLD_DUMPED>"
3793 msgstr ""
3794
3795 #. type: Plain text
3796 #: build/C/man2/sigaction.2:620
3797 msgid "child terminated abnormally"
3798 msgstr ""
3799
3800 #. type: TP
3801 #: build/C/man2/sigaction.2:620
3802 #, no-wrap
3803 msgid "B<CLD_TRAPPED>"
3804 msgstr ""
3805
3806 #. type: Plain text
3807 #: build/C/man2/sigaction.2:623
3808 msgid "traced child has trapped"
3809 msgstr ""
3810
3811 #. type: TP
3812 #: build/C/man2/sigaction.2:623
3813 #, no-wrap
3814 msgid "B<CLD_STOPPED>"
3815 msgstr ""
3816
3817 #. type: Plain text
3818 #: build/C/man2/sigaction.2:626
3819 msgid "child has stopped"
3820 msgstr ""
3821
3822 #. type: TP
3823 #: build/C/man2/sigaction.2:626
3824 #, no-wrap
3825 msgid "B<CLD_CONTINUED>"
3826 msgstr ""
3827
3828 #. type: Plain text
3829 #: build/C/man2/sigaction.2:629
3830 msgid "stopped child has continued (since Linux 2.6.9)"
3831 msgstr ""
3832
3833 #. type: Plain text
3834 #: build/C/man2/sigaction.2:636
3835 msgid ""
3836 "The following values can be placed in I<si_code> for a B<SIGIO>/B<SIGPOLL> "
3837 "signal:"
3838 msgstr ""
3839
3840 #. type: TP
3841 #: build/C/man2/sigaction.2:637
3842 #, no-wrap
3843 msgid "B<POLL_IN>"
3844 msgstr ""
3845
3846 #. type: Plain text
3847 #: build/C/man2/sigaction.2:640
3848 msgid "data input available"
3849 msgstr ""
3850
3851 #. type: TP
3852 #: build/C/man2/sigaction.2:640
3853 #, no-wrap
3854 msgid "B<POLL_OUT>"
3855 msgstr ""
3856
3857 #. type: Plain text
3858 #: build/C/man2/sigaction.2:643
3859 msgid "output buffers available"
3860 msgstr ""
3861
3862 #. type: TP
3863 #: build/C/man2/sigaction.2:643
3864 #, no-wrap
3865 msgid "B<POLL_MSG>"
3866 msgstr ""
3867
3868 #. type: Plain text
3869 #: build/C/man2/sigaction.2:646
3870 msgid "input message available"
3871 msgstr ""
3872
3873 #. type: TP
3874 #: build/C/man2/sigaction.2:646
3875 #, no-wrap
3876 msgid "B<POLL_ERR>"
3877 msgstr ""
3878
3879 #. type: Plain text
3880 #: build/C/man2/sigaction.2:649
3881 msgid "I/O error"
3882 msgstr ""
3883
3884 #. type: TP
3885 #: build/C/man2/sigaction.2:649
3886 #, no-wrap
3887 msgid "B<POLL_PRI>"
3888 msgstr ""
3889
3890 #. type: Plain text
3891 #: build/C/man2/sigaction.2:652
3892 msgid "high priority input available"
3893 msgstr ""
3894
3895 #. type: TP
3896 #: build/C/man2/sigaction.2:652
3897 #, no-wrap
3898 msgid "B<POLL_HUP>"
3899 msgstr ""
3900
3901 #. type: Plain text
3902 #: build/C/man2/sigaction.2:655
3903 msgid "device disconnected"
3904 msgstr ""
3905
3906 #. type: Plain text
3907 #: build/C/man2/sigaction.2:659
3908 msgid "B<sigaction>()  returns 0 on success and -1 on error."
3909 msgstr ""
3910
3911 #. type: Plain text
3912 #: build/C/man2/sigaction.2:664
3913 msgid ""
3914 "I<act> or I<oldact> points to memory which is not a valid part of the "
3915 "process address space."
3916 msgstr ""
3917
3918 #. type: Plain text
3919 #: build/C/man2/sigaction.2:671
3920 msgid ""
3921 "An invalid signal was specified.  This will also be generated if an attempt "
3922 "is made to change the action for B<SIGKILL> or B<SIGSTOP>, which cannot be "
3923 "caught or ignored."
3924 msgstr ""
3925
3926 #.  SVr4 does not document the EINTR condition.
3927 #. type: Plain text
3928 #: build/C/man2/sigaction.2:674
3929 msgid "POSIX.1-2001, SVr4."
3930 msgstr ""
3931
3932 #. type: Plain text
3933 #: build/C/man2/sigaction.2:682 build/C/man7/signal.7:103
3934 msgid ""
3935 "A child created via B<fork>(2)  inherits a copy of its parent's signal "
3936 "dispositions.  During an B<execve>(2), the dispositions of handled signals "
3937 "are reset to the default; the dispositions of ignored signals are left "
3938 "unchanged."
3939 msgstr ""
3940
3941 #. type: Plain text
3942 #: build/C/man2/sigaction.2:700 build/C/man2/signal.2:129
3943 msgid ""
3944 "According to POSIX, the behavior of a process is undefined after it ignores "
3945 "a B<SIGFPE>, B<SIGILL>, or B<SIGSEGV> signal that was not generated by "
3946 "B<kill>(2)  or B<raise>(3).  Integer division by zero has undefined result.  "
3947 "On some architectures it will generate a B<SIGFPE> signal.  (Also dividing "
3948 "the most negative integer by -1 may generate B<SIGFPE>.)  Ignoring this "
3949 "signal might lead to an endless loop."
3950 msgstr ""
3951
3952 #. type: Plain text
3953 #: build/C/man2/sigaction.2:717
3954 msgid ""
3955 "POSIX.1-1990 disallowed setting the action for B<SIGCHLD> to B<SIG_IGN>.  "
3956 "POSIX.1-2001 allows this possibility, so that ignoring B<SIGCHLD> can be "
3957 "used to prevent the creation of zombies (see B<wait>(2)).  Nevertheless, the "
3958 "historical BSD and System V behaviors for ignoring B<SIGCHLD> differ, so "
3959 "that the only completely portable method of ensuring that terminated "
3960 "children do not become zombies is to catch the B<SIGCHLD> signal and perform "
3961 "a B<wait>(2)  or similar."
3962 msgstr ""
3963
3964 #. type: Plain text
3965 #: build/C/man2/sigaction.2:730
3966 msgid ""
3967 "POSIX.1-1990 only specified B<SA_NOCLDSTOP>.  POSIX.1-2001 added "
3968 "B<SA_NOCLDWAIT>, B<SA_RESETHAND>, B<SA_NODEFER>, and B<SA_SIGINFO>.  Use of "
3969 "these latter values in I<sa_flags> may be less portable in applications "
3970 "intended for older UNIX implementations."
3971 msgstr ""
3972
3973 #. type: Plain text
3974 #: build/C/man2/sigaction.2:734
3975 msgid "The B<SA_RESETHAND> flag is compatible with the SVr4 flag of the same name."
3976 msgstr ""
3977
3978 #. type: Plain text
3979 #: build/C/man2/sigaction.2:744
3980 msgid ""
3981 "The B<SA_NODEFER> flag is compatible with the SVr4 flag of the same name "
3982 "under kernels 1.3.9 and newer.  On older kernels the Linux implementation "
3983 "allowed the receipt of any signal, not just the one we are installing "
3984 "(effectively overriding any I<sa_mask> settings)."
3985 msgstr ""
3986
3987 #. type: Plain text
3988 #: build/C/man2/sigaction.2:750
3989 msgid ""
3990 "B<sigaction>()  can be called with a NULL second argument to query the "
3991 "current signal handler.  It can also be used to check whether a given signal "
3992 "is valid for the current machine by calling it with NULL second and third "
3993 "arguments."
3994 msgstr ""
3995
3996 #. type: Plain text
3997 #: build/C/man2/sigaction.2:756
3998 msgid ""
3999 "It is not possible to block B<SIGKILL> or B<SIGSTOP> (by specifying them in "
4000 "I<sa_mask>).  Attempts to do so are silently ignored."
4001 msgstr ""
4002
4003 #. type: Plain text
4004 #: build/C/man2/sigaction.2:760 build/C/man2/sigpending.2:65 build/C/man2/sigprocmask.2:139 build/C/man2/sigsuspend.2:104
4005 msgid "See B<sigsetops>(3)  for details on manipulating signal sets."
4006 msgstr ""
4007
4008 #. type: Plain text
4009 #: build/C/man2/sigaction.2:765
4010 msgid ""
4011 "See B<signal>(7)  for a list of the async-signal-safe functions that can be "
4012 "safely called inside from inside a signal handler."
4013 msgstr ""
4014
4015 #. type: SS
4016 #: build/C/man2/sigaction.2:765
4017 #, no-wrap
4018 msgid "Undocumented"
4019 msgstr ""
4020
4021 #. type: Plain text
4022 #: build/C/man2/sigaction.2:775
4023 msgid ""
4024 "Before the introduction of B<SA_SIGINFO> it was also possible to get some "
4025 "additional information, namely by using a I<sa_handler> with second argument "
4026 "of type I<struct sigcontext>.  See the relevant kernel sources for details.  "
4027 "This use is obsolete now."
4028 msgstr ""
4029
4030 #. type: Plain text
4031 #: build/C/man2/sigaction.2:784
4032 msgid ""
4033 "In kernels up to and including 2.6.13, specifying B<SA_NODEFER> in "
4034 "I<sa_flags> prevents not only the delivered signal from being masked during "
4035 "execution of the handler, but also the signals specified in I<sa_mask>.  "
4036 "This bug was fixed in kernel 2.6.14."
4037 msgstr ""
4038
4039 #. type: Plain text
4040 #: build/C/man2/sigaction.2:787
4041 msgid "See B<mprotect>(2)."
4042 msgstr ""
4043
4044 #. type: Plain text
4045 #: build/C/man2/sigaction.2:806
4046 msgid ""
4047 "B<kill>(1), B<kill>(2), B<killpg>(2), B<pause>(2), B<sigaltstack>(2), "
4048 "B<signal>(2), B<signalfd>(2), B<sigpending>(2), B<sigprocmask>(2), "
4049 "B<sigsuspend>(2), B<wait>(2), B<raise>(3), B<siginterrupt>(3), "
4050 "B<sigqueue>(3), B<sigsetops>(3), B<sigvec>(3), B<core>(5), B<signal>(7)"
4051 msgstr ""
4052
4053 #. type: TH
4054 #: build/C/man2/sigaltstack.2:25
4055 #, no-wrap
4056 msgid "SIGALTSTACK"
4057 msgstr ""
4058
4059 #. type: TH
4060 #: build/C/man2/sigaltstack.2:25 build/C/man2/wait.2:50
4061 #, no-wrap
4062 msgid "2010-09-26"
4063 msgstr ""
4064
4065 #. type: Plain text
4066 #: build/C/man2/sigaltstack.2:28
4067 msgid "sigaltstack - set and/or get signal stack context"
4068 msgstr ""
4069
4070 #. type: Plain text
4071 #: build/C/man2/sigaltstack.2:32
4072 msgid "B<int sigaltstack(const stack_t *>I<ss>B<, stack_t *>I<oss>B<);>"
4073 msgstr ""
4074
4075 #. type: Plain text
4076 #: build/C/man2/sigaltstack.2:39
4077 msgid "B<sigaltstack>():"
4078 msgstr ""
4079
4080 #. type: Plain text
4081 #: build/C/man2/sigaltstack.2:46 build/C/man3/siginterrupt.3:51 build/C/man2/wait.2:79
4082 msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
4083 msgstr ""
4084
4085 #. type: Plain text
4086 #: build/C/man2/sigaltstack.2:58
4087 msgid ""
4088 "B<sigaltstack>()  allows a process to define a new alternate signal stack "
4089 "and/or retrieve the state of an existing alternate signal stack.  An "
4090 "alternate signal stack is used during the execution of a signal handler if "
4091 "the establishment of that handler (see B<sigaction>(2))  requested it."
4092 msgstr ""
4093
4094 #. type: Plain text
4095 #: build/C/man2/sigaltstack.2:61
4096 msgid ""
4097 "The normal sequence of events for using an alternate signal stack is the "
4098 "following:"
4099 msgstr ""
4100
4101 #. type: IP
4102 #: build/C/man2/sigaltstack.2:61 build/C/man7/signal.7:383
4103 #, no-wrap
4104 msgid "1."
4105 msgstr ""
4106
4107 #. type: Plain text
4108 #: build/C/man2/sigaltstack.2:65
4109 msgid "Allocate an area of memory to be used for the alternate signal stack."
4110 msgstr ""
4111
4112 #. type: IP
4113 #: build/C/man2/sigaltstack.2:65 build/C/man7/signal.7:387
4114 #, no-wrap
4115 msgid "2."
4116 msgstr ""
4117
4118 #. type: Plain text
4119 #: build/C/man2/sigaltstack.2:71
4120 msgid ""
4121 "Use B<sigaltstack>()  to inform the system of the existence and location of "
4122 "the alternate signal stack."
4123 msgstr ""
4124
4125 #. type: IP
4126 #: build/C/man2/sigaltstack.2:71 build/C/man7/signal.7:407
4127 #, no-wrap
4128 msgid "3."
4129 msgstr ""
4130
4131 #. type: Plain text
4132 #: build/C/man2/sigaltstack.2:78
4133 msgid ""
4134 "When establishing a signal handler using B<sigaction>(2), inform the system "
4135 "that the signal handler should be executed on the alternate signal stack by "
4136 "specifying the B<SA_ONSTACK> flag."
4137 msgstr ""
4138
4139 #. type: Plain text
4140 #: build/C/man2/sigaltstack.2:86
4141 msgid ""
4142 "The I<ss> argument is used to specify a new alternate signal stack, while "
4143 "the I<oss> argument is used to retrieve information about the currently "
4144 "established signal stack.  If we are interested in performing just one of "
4145 "these tasks then the other argument can be specified as NULL.  Each of these "
4146 "arguments is a structure of the following type:"
4147 msgstr ""
4148
4149 #. type: Plain text
4150 #: build/C/man2/sigaltstack.2:94
4151 #, no-wrap
4152 msgid ""
4153 "typedef struct {\n"
4154 "    void  *ss_sp;     /* Base address of stack */\n"
4155 "    int    ss_flags;  /* Flags */\n"
4156 "    size_t ss_size;   /* Number of bytes in stack */\n"
4157 "} stack_t;\n"
4158 msgstr ""
4159
4160 #. type: Plain text
4161 #: build/C/man2/sigaltstack.2:105
4162 msgid ""
4163 "To establish a new alternate signal stack, I<ss.ss_flags> is set to zero, "
4164 "and I<ss.ss_sp> and I<ss.ss_size> specify the starting address and size of "
4165 "the stack.  The constant B<SIGSTKSZ> is defined to be large enough to cover "
4166 "the usual size requirements for an alternate signal stack, and the constant "
4167 "B<MINSIGSTKSZ> defines the minimum size required to execute a signal "
4168 "handler."
4169 msgstr ""
4170
4171 #. type: Plain text
4172 #: build/C/man2/sigaltstack.2:109
4173 msgid ""
4174 "When a signal handler is invoked on the alternate stack, the kernel "
4175 "automatically aligns the address given in I<ss.ss_sp> to a suitable address "
4176 "boundary for the underlying hardware architecture."
4177 msgstr ""
4178
4179 #. type: Plain text
4180 #: build/C/man2/sigaltstack.2:114
4181 msgid ""
4182 "To disable an existing stack, specify I<ss.ss_flags> as B<SS_DISABLE>.  In "
4183 "this case, the remaining fields in I<ss> are ignored."
4184 msgstr ""
4185
4186 #. type: Plain text
4187 #: build/C/man2/sigaltstack.2:122
4188 msgid ""
4189 "If I<oss> is not NULL, then it is used to return information about the "
4190 "alternate signal stack which was in effect prior to the call to "
4191 "B<sigaltstack>().  The I<oss.ss_sp> and I<oss.ss_size> fields return the "
4192 "starting address and size of that stack.  The I<oss.ss_flags> may return "
4193 "either of the following values:"
4194 msgstr ""
4195
4196 #. type: TP
4197 #: build/C/man2/sigaltstack.2:122
4198 #, no-wrap
4199 msgid "B<SS_ONSTACK>"
4200 msgstr ""
4201
4202 #. type: Plain text
4203 #: build/C/man2/sigaltstack.2:128
4204 msgid ""
4205 "The process is currently executing on the alternate signal stack.  (Note "
4206 "that it is not possible to change the alternate signal stack if the process "
4207 "is currently executing on it.)"
4208 msgstr ""
4209
4210 #. type: TP
4211 #: build/C/man2/sigaltstack.2:128
4212 #, no-wrap
4213 msgid "B<SS_DISABLE>"
4214 msgstr ""
4215
4216 #. type: Plain text
4217 #: build/C/man2/sigaltstack.2:131
4218 msgid "The alternate signal stack is currently disabled."
4219 msgstr ""
4220
4221 #. type: Plain text
4222 #: build/C/man2/sigaltstack.2:135
4223 msgid ""
4224 "B<sigaltstack>()  returns 0 on success, or -1 on failure with I<errno> set "
4225 "to indicate the error."
4226 msgstr ""
4227
4228 #. type: Plain text
4229 #: build/C/man2/sigaltstack.2:140
4230 msgid ""
4231 "Either I<ss> or I<oss> is not NULL and points to an area outside of the "
4232 "process's address space."
4233 msgstr ""
4234
4235 #. type: Plain text
4236 #: build/C/man2/sigaltstack.2:145
4237 msgid ""
4238 "I<ss> is not NULL and the I<ss_flags> field contains a nonzero value other "
4239 "than B<SS_DISABLE>."
4240 msgstr ""
4241
4242 #. type: Plain text
4243 #: build/C/man2/sigaltstack.2:149
4244 msgid ""
4245 "The specified size of the new alternate signal stack (I<ss.ss_size>) was "
4246 "less than B<MINSTKSZ>."
4247 msgstr ""
4248
4249 #. type: Plain text
4250 #: build/C/man2/sigaltstack.2:154
4251 msgid ""
4252 "An attempt was made to change the alternate signal stack while it was active "
4253 "(i.e., the process was already executing on the current alternate signal "
4254 "stack)."
4255 msgstr ""
4256
4257 #. type: Plain text
4258 #: build/C/man2/sigaltstack.2:156
4259 msgid "SUSv2, SVr4, POSIX.1-2001."
4260 msgstr ""
4261
4262 #. type: Plain text
4263 #: build/C/man2/sigaltstack.2:164
4264 msgid ""
4265 "The most common usage of an alternate signal stack is to handle the "
4266 "B<SIGSEGV> signal that is generated if the space available for the normal "
4267 "process stack is exhausted: in this case, a signal handler for B<SIGSEGV> "
4268 "cannot be invoked on the process stack; if we wish to handle it, we must use "
4269 "an alternate signal stack."
4270 msgstr ""
4271
4272 #. type: Plain text
4273 #: build/C/man2/sigaltstack.2:174
4274 msgid ""
4275 "Establishing an alternate signal stack is useful if a process expects that "
4276 "it may exhaust its standard stack.  This may occur, for example, because the "
4277 "stack grows so large that it encounters the upwardly growing heap, or it "
4278 "reaches a limit established by a call to B<setrlimit(RLIMIT_STACK, &rlim)>.  "
4279 "If the standard stack is exhausted, the kernel sends the process a "
4280 "B<SIGSEGV> signal.  In these circumstances the only way to catch this signal "
4281 "is on an alternate signal stack."
4282 msgstr ""
4283
4284 #. type: Plain text
4285 #: build/C/man2/sigaltstack.2:180
4286 msgid ""
4287 "On most hardware architectures supported by Linux, stacks grow downward.  "
4288 "B<sigaltstack>()  automatically takes account of the direction of stack "
4289 "growth."
4290 msgstr ""
4291
4292 #. type: Plain text
4293 #: build/C/man2/sigaltstack.2:189
4294 msgid ""
4295 "Functions called from a signal handler executing on an alternate signal "
4296 "stack will also use the alternate signal stack.  (This also applies to any "
4297 "handlers invoked for other signals while the process is executing on the "
4298 "alternate signal stack.)  Unlike the standard stack, the system does not "
4299 "automatically extend the alternate signal stack.  Exceeding the allocated "
4300 "size of the alternate signal stack will lead to unpredictable results."
4301 msgstr ""
4302
4303 #. type: Plain text
4304 #: build/C/man2/sigaltstack.2:197
4305 msgid ""
4306 "A successful call to B<execve>(2)  removes any existing alternate signal "
4307 "stack.  A child process created via B<fork>(2)  inherits a copy of its "
4308 "parent's alternate signal stack settings."
4309 msgstr ""
4310
4311 #. type: Plain text
4312 #: build/C/man2/sigaltstack.2:206
4313 msgid ""
4314 "B<sigaltstack>()  supersedes the older B<sigstack>()  call.  For backward "
4315 "compatibility, glibc also provides B<sigstack>().  All new applications "
4316 "should be written using B<sigaltstack>()."
4317 msgstr ""
4318
4319 #. type: SS
4320 #: build/C/man2/sigaltstack.2:206 build/C/man3/sigpause.3:59
4321 #, no-wrap
4322 msgid "History"
4323 msgstr ""
4324
4325 #. type: Plain text
4326 #: build/C/man2/sigaltstack.2:213
4327 msgid ""
4328 "4.2BSD had a B<sigstack>()  system call.  It used a slightly different "
4329 "struct, and had the major disadvantage that the caller had to know the "
4330 "direction of stack growth."
4331 msgstr ""
4332
4333 #. type: Plain text
4334 #: build/C/man2/sigaltstack.2:216
4335 msgid "The following code segment demonstrates the use of B<sigaltstack>():"
4336 msgstr ""
4337
4338 #. type: Plain text
4339 #: build/C/man2/sigaltstack.2:220
4340 #, no-wrap
4341 msgid "stack_t ss;\n"
4342 msgstr ""
4343
4344 #. type: Plain text
4345 #: build/C/man2/sigaltstack.2:228
4346 #, no-wrap
4347 msgid ""
4348 "ss.ss_sp = malloc(SIGSTKSZ);\n"
4349 "if (ss.ss_sp == NULL)\n"
4350 "    /* Handle error */;\n"
4351 "ss.ss_size = SIGSTKSZ;\n"
4352 "ss.ss_flags = 0;\n"
4353 "if (sigaltstack(&ss, NULL) == -1)\n"
4354 "    /* Handle error */;\n"
4355 msgstr ""
4356
4357 #. type: Plain text
4358 #: build/C/man2/sigaltstack.2:237
4359 msgid ""
4360 "B<execve>(2), B<setrlimit>(2), B<sigaction>(2), B<siglongjmp>(3), "
4361 "B<sigsetjmp>(3), B<signal>(7)"
4362 msgstr ""
4363
4364 #. type: TH
4365 #: build/C/man7/sigevent.7:24
4366 #, no-wrap
4367 msgid "SIGEVENT"
4368 msgstr ""
4369
4370 #. type: TH
4371 #: build/C/man7/sigevent.7:24 build/C/man3/siginterrupt.3:29
4372 #, no-wrap
4373 msgid "2011-09-09"
4374 msgstr ""
4375
4376 #. type: Plain text
4377 #: build/C/man7/sigevent.7:27
4378 msgid "sigevent - structure for notification from asynchronous routines"
4379 msgstr ""
4380
4381 #. type: Plain text
4382 #: build/C/man7/sigevent.7:34
4383 #, no-wrap
4384 msgid ""
4385 "union sigval {          /* Data passed with notification */\n"
4386 "    int     sival_int;         /* Integer value */\n"
4387 "    void   *sival_ptr;         /* Pointer value */\n"
4388 "};\n"
4389 msgstr ""
4390
4391 #. type: Plain text
4392 #: build/C/man7/sigevent.7:49
4393 #, no-wrap
4394 msgid ""
4395 "struct sigevent {\n"
4396 "    int          sigev_notify; /* Notification method */\n"
4397 "    int          sigev_signo;  /* Notification signal */\n"
4398 "    union sigval sigev_value;  /* Data passed with\n"
4399 "                                  notification */\n"
4400 "    void       (*sigev_notify_function) (union sigval);\n"
4401 "                     /* Function used for thread\n"
4402 "                        notification (SIGEV_THREAD) */\n"
4403 "    void        *sigev_notify_attributes;\n"
4404 "                     /* Attributes for notification thread\n"
4405 "                        (SIGEV_THREAD) */\n"
4406 "    pid_t        sigev_notify_thread_id;\n"
4407 "                     /* ID of thread to signal (SIGEV_THREAD_ID) */\n"
4408 "};\n"
4409 msgstr ""
4410
4411 #. type: Plain text
4412 #: build/C/man7/sigevent.7:58
4413 msgid ""
4414 "The I<sigevent> structure is used by various APIs to describe the way a "
4415 "process is to be notified about an event (e.g., completion of an "
4416 "asynchronous request, expiration of a timer, or the arrival of a message)."
4417 msgstr ""
4418
4419 #. type: Plain text
4420 #: build/C/man7/sigevent.7:66
4421 msgid ""
4422 "The definition shown in the SYNOPSIS is approximate: some of the fields in "
4423 "the I<sigevent> structure may be defined as part of a union.  Programs "
4424 "should only employ those fields relevant to the value specified in "
4425 "I<sigev_notify>."
4426 msgstr ""
4427
4428 #. type: Plain text
4429 #: build/C/man7/sigevent.7:71
4430 msgid ""
4431 "The I<sigev_notify> field specifies how notification is to be performed.  "
4432 "This field can have one of the following values:"
4433 msgstr ""
4434
4435 #. type: TP
4436 #: build/C/man7/sigevent.7:71 build/C/man2/timer_create.2:105
4437 #, no-wrap
4438 msgid "B<SIGEV_NONE>"
4439 msgstr ""
4440
4441 #. type: Plain text
4442 #: build/C/man7/sigevent.7:74
4443 msgid "A \"null\" notification: don't do anything when the event occurs."
4444 msgstr ""
4445
4446 #. type: TP
4447 #: build/C/man7/sigevent.7:74 build/C/man2/timer_create.2:110
4448 #, no-wrap
4449 msgid "B<SIGEV_SIGNAL>"
4450 msgstr ""
4451
4452 #. type: Plain text
4453 #: build/C/man7/sigevent.7:78
4454 msgid "Notify the process by sending the signal specified in I<sigev_signo>."
4455 msgstr ""
4456
4457 #. type: Plain text
4458 #: build/C/man7/sigevent.7:85
4459 msgid ""
4460 "If the signal is caught with a signal handler that was registered using the "
4461 "B<sigaction>(2)  B<SA_SIGINFO> flag, then the following fields are set in "
4462 "the I<siginfo_t> structure that is passed as the second argument of the "
4463 "handler:"
4464 msgstr ""
4465
4466 #. type: Plain text
4467 #: build/C/man7/sigevent.7:90
4468 msgid ""
4469 "This field is set to a value that depends on the API delivering the "
4470 "notification."
4471 msgstr ""
4472
4473 #. type: TP
4474 #: build/C/man7/sigevent.7:90 build/C/man2/wait.2:301
4475 #, no-wrap
4476 msgid "I<si_signo>"
4477 msgstr ""
4478
4479 #. type: Plain text
4480 #: build/C/man7/sigevent.7:94
4481 msgid ""
4482 "This field is set to the signal number (i.e., the same value as in "
4483 "I<sigev_signo>)."
4484 msgstr ""
4485
4486 #. type: Plain text
4487 #: build/C/man7/sigevent.7:98
4488 msgid "This field is set to the value specified in I<sigev_value>."
4489 msgstr ""
4490
4491 #. type: Plain text
4492 #: build/C/man7/sigevent.7:103
4493 msgid ""
4494 "Depending on the API, other fields may also be set in the I<siginfo_t> "
4495 "structure."
4496 msgstr ""
4497
4498 #. type: Plain text
4499 #: build/C/man7/sigevent.7:106
4500 msgid ""
4501 "The same information is also available if the signal is accepted using "
4502 "B<sigwaitinfo>(2)."
4503 msgstr ""
4504
4505 #. type: TP
4506 #: build/C/man7/sigevent.7:106 build/C/man2/timer_create.2:128
4507 #, no-wrap
4508 msgid "B<SIGEV_THREAD>"
4509 msgstr ""
4510
4511 #. type: Plain text
4512 #: build/C/man7/sigevent.7:123
4513 msgid ""
4514 "Notify the process by invoking I<sigev_notify_function> \"as if\" it were "
4515 "the start function of a new thread.  (Among the implementation possibilities "
4516 "here are that each timer notification could result in the creation of a new "
4517 "thread, or that a single thread is created to receive all notifications.)  "
4518 "The function is invoked with I<sigev_value> as its sole argument.  If "
4519 "I<sigev_notify_attributes> is not NULL, it should point to a "
4520 "I<pthread_attr_t> structure that defines attributes for the new thread (see "
4521 "B<pthread_attr_init>(3))."
4522 msgstr ""
4523
4524 #. type: TP
4525 #: build/C/man7/sigevent.7:123 build/C/man2/timer_create.2:136
4526 #, no-wrap
4527 msgid "B<SIGEV_THREAD_ID> (Linux-specific)"
4528 msgstr ""
4529
4530 #.  | SIGEV_SIGNAL vs not?
4531 #. type: Plain text
4532 #: build/C/man7/sigevent.7:128
4533 msgid "Currently used only by POSIX timers; see B<timer_create>(2)."
4534 msgstr ""
4535
4536 #. type: Plain text
4537 #: build/C/man7/sigevent.7:130 build/C/man2/sigpending.2:61 build/C/man2/sigprocmask.2:109 build/C/man3/sigqueue.3:114 build/C/man3/sigsetops.3:128 build/C/man2/sigsuspend.2:82 build/C/man3/sigwait.3:79 build/C/man2/sigwaitinfo.2:128 build/C/man2/timer_create.2:193 build/C/man2/timer_delete.2:66 build/C/man2/timer_getoverrun.2:96 build/C/man2/timer_settime.2:205
4538 msgid "POSIX.1-2001."
4539 msgstr ""
4540
4541 #. type: Plain text
4542 #: build/C/man7/sigevent.7:140
4543 msgid ""
4544 "B<timer_create>(2), B<aio_fsync>(3), B<aio_read>(3), B<aio_write>(3), "
4545 "B<getaddrinfo_a>(3), B<lio_listio>(3), B<mq_notify>(3), B<aio>(7), "
4546 "B<pthreads>(7)"
4547 msgstr ""
4548
4549 #. type: TH
4550 #: build/C/man3/siginterrupt.3:29
4551 #, no-wrap
4552 msgid "SIGINTERRUPT"
4553 msgstr ""
4554
4555 #. type: Plain text
4556 #: build/C/man3/siginterrupt.3:32
4557 msgid "siginterrupt - allow signals to interrupt system calls"
4558 msgstr ""
4559
4560 #. type: Plain text
4561 #: build/C/man3/siginterrupt.3:37
4562 #, no-wrap
4563 msgid "B<int siginterrupt(int >I<sig>B<, int >I<flag>B<);>\n"
4564 msgstr ""
4565
4566 #. type: Plain text
4567 #: build/C/man3/siginterrupt.3:45
4568 msgid "B<siginterrupt>():"
4569 msgstr ""
4570
4571 #. type: Plain text
4572 #: build/C/man3/siginterrupt.3:62
4573 msgid ""
4574 "The B<siginterrupt>()  function changes the restart behavior when a system "
4575 "call is interrupted by the signal I<sig>.  If the I<flag> argument is false "
4576 "(0), then system calls will be restarted if interrupted by the specified "
4577 "signal I<sig>.  This is the default behavior in Linux."
4578 msgstr ""
4579
4580 #. type: Plain text
4581 #: build/C/man3/siginterrupt.3:67
4582 msgid ""
4583 "If the I<flag> argument is true (1) and no data has been transferred, then a "
4584 "system call interrupted by the signal I<sig> will return -1 and I<errno> "
4585 "will be set to B<EINTR>."
4586 msgstr ""
4587
4588 #. type: Plain text
4589 #: build/C/man3/siginterrupt.3:71
4590 msgid ""
4591 "If the I<flag> argument is true (1) and data transfer has started, then the "
4592 "system call will be interrupted and will return the actual amount of data "
4593 "transferred."
4594 msgstr ""
4595
4596 #. type: Plain text
4597 #: build/C/man3/siginterrupt.3:76
4598 msgid ""
4599 "The B<siginterrupt>()  function returns 0 on success, or -1 if the signal "
4600 "number I<sig> is invalid."
4601 msgstr ""
4602
4603 #. type: Plain text
4604 #: build/C/man3/siginterrupt.3:80
4605 msgid "The specified signal number is invalid."
4606 msgstr ""
4607
4608 #. type: Plain text
4609 #: build/C/man3/siginterrupt.3:89
4610 msgid ""
4611 "4.3BSD, POSIX.1-2001.  POSIX.1-2008 marks B<siginterrupt>()  as obsolete, "
4612 "recommending the use of B<sigaction>(2)  with the B<SA_RESTART> flag "
4613 "instead."
4614 msgstr ""
4615
4616 #. type: Plain text
4617 #: build/C/man3/siginterrupt.3:91
4618 msgid "B<signal>(2)"
4619 msgstr ""
4620
4621 #. type: TH
4622 #: build/C/man2/signal.2:34 build/C/man7/signal.7:44
4623 #, no-wrap
4624 msgid "SIGNAL"
4625 msgstr ""
4626
4627 #. type: TH
4628 #: build/C/man2/signal.2:34
4629 #, no-wrap
4630 msgid "2008-07-11"
4631 msgstr ""
4632
4633 #. type: Plain text
4634 #: build/C/man2/signal.2:37
4635 msgid "signal - ANSI C signal handling"
4636 msgstr ""
4637
4638 #. type: Plain text
4639 #: build/C/man2/signal.2:43
4640 msgid "B<sighandler_t signal(int >I<signum>B<, sighandler_t >I<handler>B<);>"
4641 msgstr ""
4642
4643 #. type: Plain text
4644 #: build/C/man2/signal.2:52
4645 msgid ""
4646 "The behavior of B<signal>()  varies across UNIX versions, and has also "
4647 "varied historically across different versions of Linux.  B<Avoid its use>: "
4648 "use B<sigaction>(2)  instead.  See I<Portability> below."
4649 msgstr ""
4650
4651 #. type: Plain text
4652 #: build/C/man2/signal.2:62
4653 msgid ""
4654 "B<signal>()  sets the disposition of the signal I<signum> to I<handler>, "
4655 "which is either B<SIG_IGN>, B<SIG_DFL>, or the address of a "
4656 "programmer-defined function (a \"signal handler\")."
4657 msgstr ""
4658
4659 #. type: Plain text
4660 #: build/C/man2/signal.2:66
4661 msgid ""
4662 "If the signal I<signum> is delivered to the process, then one of the "
4663 "following happens:"
4664 msgstr ""
4665
4666 #. type: Plain text
4667 #: build/C/man2/signal.2:71
4668 msgid "If the disposition is set to B<SIG_IGN>, then the signal is ignored."
4669 msgstr ""
4670
4671 #. type: Plain text
4672 #: build/C/man2/signal.2:78
4673 msgid ""
4674 "If the disposition is set to B<SIG_DFL>, then the default action associated "
4675 "with the signal (see B<signal>(7))  occurs."
4676 msgstr ""
4677
4678 #. type: Plain text
4679 #: build/C/man2/signal.2:89
4680 msgid ""
4681 "If the disposition is set to a function, then first either the disposition "
4682 "is reset to B<SIG_DFL>, or the signal is blocked (see I<Portability> below), "
4683 "and then I<handler> is called with argument I<signum>.  If invocation of the "
4684 "handler caused the signal to be blocked, then the signal is unblocked upon "
4685 "return from the handler."
4686 msgstr ""
4687
4688 #. type: Plain text
4689 #: build/C/man2/signal.2:95
4690 msgid "The signals B<SIGKILL> and B<SIGSTOP> cannot be caught or ignored."
4691 msgstr ""
4692
4693 #. type: Plain text
4694 #: build/C/man2/signal.2:100
4695 msgid ""
4696 "B<signal>()  returns the previous value of the signal handler, or B<SIG_ERR> "
4697 "on error."
4698 msgstr ""
4699
4700 #. type: Plain text
4701 #: build/C/man2/signal.2:105
4702 msgid "I<signum> is invalid."
4703 msgstr ""
4704
4705 #. type: Plain text
4706 #: build/C/man2/signal.2:111
4707 msgid "The effects of B<signal>()  in a multithreaded process are unspecified."
4708 msgstr ""
4709
4710 #. type: Plain text
4711 #: build/C/man2/signal.2:136
4712 msgid ""
4713 "See B<sigaction>(2)  for details on what happens when B<SIGCHLD> is set to "
4714 "B<SIG_IGN>."
4715 msgstr ""
4716
4717 #. type: Plain text
4718 #: build/C/man2/signal.2:141
4719 msgid ""
4720 "See B<signal>(7)  for a list of the async-signal-safe functions that can be "
4721 "safely called from inside a signal handler."
4722 msgstr ""
4723
4724 #. type: Plain text
4725 #: build/C/man2/signal.2:156
4726 msgid ""
4727 "The use of I<sighandler_t> is a GNU extension.  Various versions of libc "
4728 "predefine this type; libc4 and libc5 define I<SignalHandler>; glibc defines "
4729 "I<sig_t> and, when B<_GNU_SOURCE> is defined, also I<sighandler_t>.  Without "
4730 "use of such a type, the declaration of B<signal>()  is the somewhat harder "
4731 "to read:"
4732 msgstr ""
4733
4734 #. type: Plain text
4735 #: build/C/man2/signal.2:160
4736 #, no-wrap
4737 msgid ""
4738 "B<void ( *>I<signal>B<(int >I<signum>B<, void (*>I<handler>B<)(int)) ) "
4739 "(int);>\n"
4740 msgstr ""
4741
4742 #. type: SS
4743 #: build/C/man2/signal.2:162
4744 #, no-wrap
4745 msgid "Portability"
4746 msgstr ""
4747
4748 #. type: Plain text
4749 #: build/C/man2/signal.2:174
4750 msgid ""
4751 "The only portable use of B<signal>()  is to set a signal's disposition to "
4752 "B<SIG_DFL> or B<SIG_IGN>.  The semantics when using B<signal>()  to "
4753 "establish a signal handler vary across systems (and POSIX.1 explicitly "
4754 "permits this variation); B<do not use it for this purpose.>"
4755 msgstr ""
4756
4757 #. type: Plain text
4758 #: build/C/man2/signal.2:180
4759 msgid ""
4760 "POSIX.1 solved the portability mess by specifying B<sigaction>(2), which "
4761 "provides explicit control of the semantics when a signal handler is invoked; "
4762 "use that interface instead of B<signal>()."
4763 msgstr ""
4764
4765 #. type: Plain text
4766 #: build/C/man2/signal.2:193
4767 msgid ""
4768 "In the original UNIX systems, when a handler that was established using "
4769 "B<signal>()  was invoked by the delivery of a signal, the disposition of the "
4770 "signal would be reset to B<SIG_DFL>, and the system did not block delivery "
4771 "of further instances of the signal.  System V also provides these semantics "
4772 "for B<signal>().  This was bad because the signal might be delivered again "
4773 "before the handler had a chance to reestablish itself.  Furthermore, rapid "
4774 "deliveries of the same signal could result in recursive invocations of the "
4775 "handler."
4776 msgstr ""
4777
4778 #. type: Plain text
4779 #: build/C/man2/signal.2:203
4780 msgid ""
4781 "BSD improved on this situation by changing the semantics of signal handling "
4782 "(but, unfortunately, silently changed the semantics when establishing a "
4783 "handler with B<signal>()).  On BSD, when a signal handler is invoked, the "
4784 "signal disposition is not reset, and further instances of the signal are "
4785 "blocked from being delivered while the handler is executing."
4786 msgstr ""
4787
4788 #. type: Plain text
4789 #: build/C/man2/signal.2:205
4790 msgid "The situation on Linux is as follows:"
4791 msgstr ""
4792
4793 #. type: Plain text
4794 #: build/C/man2/signal.2:209
4795 msgid "The kernel's B<signal>()  system call provides System V semantics."
4796 msgstr ""
4797
4798 #. type: Plain text
4799 #: build/C/man2/signal.2:225
4800 msgid ""
4801 "By default, in glibc 2 and later, the B<signal>()  wrapper function does not "
4802 "invoke the kernel system call.  Instead, it calls B<sigaction>(2)  using "
4803 "flags that supply BSD semantics.  This default behavior is provided as long "
4804 "as the B<_BSD_SOURCE> feature test macro is defined.  By default, "
4805 "B<_BSD_SOURCE> is defined; it is also implicitly defined if one defines "
4806 "B<_GNU_SOURCE>, and can of course be explicitly defined."
4807 msgstr ""
4808
4809 #
4810 #.  System V semantics are also provided if one uses the separate
4811 #.  .BR sysv_signal (3)
4812 #.  function.
4813 #. type: Plain text
4814 #: build/C/man2/signal.2:248
4815 msgid ""
4816 "On glibc 2 and later, if the B<_BSD_SOURCE> feature test macro is not "
4817 "defined, then B<signal>()  provides System V semantics.  (The default "
4818 "implicit definition of B<_BSD_SOURCE> is not provided if one invokes "
4819 "B<gcc>(1)  in one of its standard modes (I<-std=xxx> or I<-ansi>)  or "
4820 "defines various other feature test macros such as B<_POSIX_SOURCE>, "
4821 "B<_XOPEN_SOURCE>, or B<_SVID_SOURCE>; see B<feature_test_macros>(7).)"
4822 msgstr ""
4823
4824 #. type: Plain text
4825 #: build/C/man2/signal.2:259
4826 msgid ""
4827 "The B<signal>()  function in Linux libc4 and libc5 provide System V "
4828 "semantics.  If one on a libc5 system includes I<E<lt>bsd/signal.hE<gt>> "
4829 "instead of I<E<lt>signal.hE<gt>>, then B<signal>()  provides BSD semantics."
4830 msgstr ""
4831
4832 #. type: Plain text
4833 #: build/C/man2/signal.2:278
4834 msgid ""
4835 "B<kill>(1), B<alarm>(2), B<kill>(2), B<killpg>(2), B<pause>(2), "
4836 "B<sigaction>(2), B<signalfd>(2), B<sigpending>(2), B<sigprocmask>(2), "
4837 "B<sigsuspend>(2), B<bsd_signal>(3), B<raise>(3), B<siginterrupt>(3), "
4838 "B<sigqueue>(3), B<sigsetops>(3), B<sigvec>(3), B<sysv_signal>(3), "
4839 "B<signal>(7)"
4840 msgstr ""
4841
4842 #. type: Plain text
4843 #: build/C/man7/signal.7:47
4844 msgid "signal - overview of signals"
4845 msgstr ""
4846
4847 #. type: Plain text
4848 #: build/C/man7/signal.7:50
4849 msgid ""
4850 "Linux supports both POSIX reliable signals (hereinafter \"standard "
4851 "signals\") and POSIX real-time signals."
4852 msgstr ""
4853
4854 #. type: SS
4855 #: build/C/man7/signal.7:50
4856 #, no-wrap
4857 msgid "Signal Dispositions"
4858 msgstr ""
4859
4860 #. type: Plain text
4861 #: build/C/man7/signal.7:55
4862 msgid ""
4863 "Each signal has a current I<disposition>, which determines how the process "
4864 "behaves when it is delivered the signal."
4865 msgstr ""
4866
4867 #. type: Plain text
4868 #: build/C/man7/signal.7:58
4869 msgid ""
4870 "The entries in the \"Action\" column of the tables below specify the default "
4871 "disposition for each signal, as follows:"
4872 msgstr ""
4873
4874 #. type: IP
4875 #: build/C/man7/signal.7:58
4876 #, no-wrap
4877 msgid "Term"
4878 msgstr ""
4879
4880 #. type: Plain text
4881 #: build/C/man7/signal.7:60
4882 msgid "Default action is to terminate the process."
4883 msgstr ""
4884
4885 #. type: IP
4886 #: build/C/man7/signal.7:60
4887 #, no-wrap
4888 msgid "Ign"
4889 msgstr ""
4890
4891 #. type: Plain text
4892 #: build/C/man7/signal.7:62
4893 msgid "Default action is to ignore the signal."
4894 msgstr ""
4895
4896 #. type: IP
4897 #: build/C/man7/signal.7:62
4898 #, no-wrap
4899 msgid "Core"
4900 msgstr ""
4901
4902 #. type: Plain text
4903 #: build/C/man7/signal.7:65
4904 msgid "Default action is to terminate the process and dump core (see B<core>(5))."
4905 msgstr ""
4906
4907 #. type: IP
4908 #: build/C/man7/signal.7:65
4909 #, no-wrap
4910 msgid "Stop"
4911 msgstr ""
4912
4913 #. type: Plain text
4914 #: build/C/man7/signal.7:67
4915 msgid "Default action is to stop the process."
4916 msgstr ""
4917
4918 #. type: IP
4919 #: build/C/man7/signal.7:67
4920 #, no-wrap
4921 msgid "Cont"
4922 msgstr ""
4923
4924 #. type: Plain text
4925 #: build/C/man7/signal.7:69
4926 msgid "Default action is to continue the process if it is currently stopped."
4927 msgstr ""
4928
4929 #. type: Plain text
4930 #: build/C/man7/signal.7:91
4931 msgid ""
4932 "A process can change the disposition of a signal using B<sigaction>(2)  or "
4933 "B<signal>(2).  (The latter is less portable when establishing a signal "
4934 "handler; see B<signal>(2)  for details.)  Using these system calls, a "
4935 "process can elect one of the following behaviors to occur on delivery of the "
4936 "signal: perform the default action; ignore the signal; or catch the signal "
4937 "with a I<signal handler>, a programmer-defined function that is "
4938 "automatically invoked when the signal is delivered.  (By default, the signal "
4939 "handler is invoked on the normal process stack.  It is possible to arrange "
4940 "that the signal handler uses an alternate stack; see B<sigaltstack>(2)  for "
4941 "a discussion of how to do this and when it might be useful.)"
4942 msgstr ""
4943
4944 #. type: Plain text
4945 #: build/C/man7/signal.7:95
4946 msgid ""
4947 "The signal disposition is a per-process attribute: in a multithreaded "
4948 "application, the disposition of a particular signal is the same for all "
4949 "threads."
4950 msgstr ""
4951
4952 #. type: SS
4953 #: build/C/man7/signal.7:103
4954 #, no-wrap
4955 msgid "Sending a Signal"
4956 msgstr ""
4957
4958 #. type: Plain text
4959 #: build/C/man7/signal.7:106
4960 msgid ""
4961 "The following system calls and library functions allow the caller to send a "
4962 "signal:"
4963 msgstr ""
4964
4965 #. type: TP
4966 #: build/C/man7/signal.7:106
4967 #, no-wrap
4968 msgid "B<raise>(3)"
4969 msgstr ""
4970
4971 #. type: Plain text
4972 #: build/C/man7/signal.7:109
4973 msgid "Sends a signal to the calling thread."
4974 msgstr ""
4975
4976 #. type: Plain text
4977 #: build/C/man7/signal.7:114
4978 msgid ""
4979 "Sends a signal to a specified process, to all members of a specified process "
4980 "group, or to all processes on the system."
4981 msgstr ""
4982
4983 #. type: TP
4984 #: build/C/man7/signal.7:114
4985 #, no-wrap
4986 msgid "B<killpg>(2)"
4987 msgstr ""
4988
4989 #. type: Plain text
4990 #: build/C/man7/signal.7:117
4991 msgid "Sends a signal to all of the members of a specified process group."
4992 msgstr ""
4993
4994 #. type: TP
4995 #: build/C/man7/signal.7:117
4996 #, no-wrap
4997 msgid "B<pthread_kill>(3)"
4998 msgstr ""
4999
5000 #. type: Plain text
5001 #: build/C/man7/signal.7:121
5002 msgid ""
5003 "Sends a signal to a specified POSIX thread in the same process as the "
5004 "caller."
5005 msgstr ""
5006
5007 #. type: TP
5008 #: build/C/man7/signal.7:121
5009 #, no-wrap
5010 msgid "B<tgkill>(2)"
5011 msgstr ""
5012
5013 #. type: Plain text
5014 #: build/C/man7/signal.7:126
5015 msgid ""
5016 "Sends a signal to a specified thread within a specific process.  (This is "
5017 "the system call used to implement B<pthread_kill>(3).)"
5018 msgstr ""
5019
5020 #. type: Plain text
5021 #: build/C/man7/signal.7:129
5022 msgid "Sends a real-time signal with accompanying data to a specified process."
5023 msgstr ""
5024
5025 #. type: SS
5026 #: build/C/man7/signal.7:129
5027 #, no-wrap
5028 msgid "Waiting for a Signal to be Caught"
5029 msgstr ""
5030
5031 #. type: Plain text
5032 #: build/C/man7/signal.7:133
5033 msgid ""
5034 "The following system calls suspend execution of the calling process or "
5035 "thread until a signal is caught (or an unhandled signal terminates the "
5036 "process):"
5037 msgstr ""
5038
5039 #. type: TP
5040 #: build/C/man7/signal.7:133
5041 #, no-wrap
5042 msgid "B<pause>(2)"
5043 msgstr ""
5044
5045 #. type: Plain text
5046 #: build/C/man7/signal.7:136
5047 msgid "Suspends execution until any signal is caught."
5048 msgstr ""
5049
5050 #. type: TP
5051 #: build/C/man7/signal.7:136
5052 #, no-wrap
5053 msgid "B<sigsuspend>(2)"
5054 msgstr ""
5055
5056 #. type: Plain text
5057 #: build/C/man7/signal.7:140
5058 msgid ""
5059 "Temporarily changes the signal mask (see below) and suspends execution until "
5060 "one of the unmasked signals is caught."
5061 msgstr ""
5062
5063 #. type: SS
5064 #: build/C/man7/signal.7:140
5065 #, no-wrap
5066 msgid "Synchronously Accepting a Signal"
5067 msgstr ""
5068
5069 #. type: Plain text
5070 #: build/C/man7/signal.7:147
5071 msgid ""
5072 "Rather than asynchronously catching a signal via a signal handler, it is "
5073 "possible to synchronously accept the signal, that is, to block execution "
5074 "until the signal is delivered, at which point the kernel returns information "
5075 "about the signal to the caller.  There are two general ways to do this:"
5076 msgstr ""
5077
5078 #. type: Plain text
5079 #: build/C/man7/signal.7:155
5080 msgid ""
5081 "B<sigwaitinfo>(2), B<sigtimedwait>(2), and B<sigwait>(3)  suspend execution "
5082 "until one of the signals in a specified set is delivered.  Each of these "
5083 "calls returns information about the delivered signal."
5084 msgstr ""
5085
5086 #. type: Plain text
5087 #: build/C/man7/signal.7:168
5088 msgid ""
5089 "B<signalfd>(2)  returns a file descriptor that can be used to read "
5090 "information about signals that are delivered to the caller.  Each B<read>(2)  "
5091 "from this file descriptor blocks until one of the signals in the set "
5092 "specified in the B<signalfd>(2)  call is delivered to the caller.  The "
5093 "buffer returned by B<read>(2)  contains a structure describing the signal."
5094 msgstr ""
5095
5096 #. type: SS
5097 #: build/C/man7/signal.7:168
5098 #, no-wrap
5099 msgid "Signal Mask and Pending Signals"
5100 msgstr ""
5101
5102 #. type: Plain text
5103 #: build/C/man7/signal.7:175
5104 msgid ""
5105 "A signal may be I<blocked>, which means that it will not be delivered until "
5106 "it is later unblocked.  Between the time when it is generated and when it is "
5107 "delivered a signal is said to be I<pending>."
5108 msgstr ""
5109
5110 #. type: Plain text
5111 #: build/C/man7/signal.7:184
5112 msgid ""
5113 "Each thread in a process has an independent I<signal mask>, which indicates "
5114 "the set of signals that the thread is currently blocking.  A thread can "
5115 "manipulate its signal mask using B<pthread_sigmask>(3).  In a traditional "
5116 "single-threaded application, B<sigprocmask>(2)  can be used to manipulate "
5117 "the signal mask."
5118 msgstr ""
5119
5120 #. type: Plain text
5121 #: build/C/man7/signal.7:190 build/C/man2/sigprocmask.2:121
5122 msgid ""
5123 "A child created via B<fork>(2)  inherits a copy of its parent's signal mask; "
5124 "the signal mask is preserved across B<execve>(2)."
5125 msgstr ""
5126
5127 #. type: Plain text
5128 #: build/C/man7/signal.7:207
5129 msgid ""
5130 "A signal may be generated (and thus pending)  for a process as a whole "
5131 "(e.g., when sent using B<kill>(2))  or for a specific thread (e.g., certain "
5132 "signals, such as B<SIGSEGV> and B<SIGFPE>, generated as a consequence of "
5133 "executing a specific machine-language instruction are thread directed, as "
5134 "are signals targeted at a specific thread using B<pthread_kill>(3)).  A "
5135 "process-directed signal may be delivered to any one of the threads that does "
5136 "not currently have the signal blocked.  If more than one of the threads has "
5137 "the signal unblocked, then the kernel chooses an arbitrary thread to which "
5138 "to deliver the signal."
5139 msgstr ""
5140
5141 #. type: Plain text
5142 #: build/C/man7/signal.7:214
5143 msgid ""
5144 "A thread can obtain the set of signals that it currently has pending using "
5145 "B<sigpending>(2).  This set will consist of the union of the set of pending "
5146 "process-directed signals and the set of signals pending for the calling "
5147 "thread."
5148 msgstr ""
5149
5150 #. type: Plain text
5151 #: build/C/man7/signal.7:220 build/C/man2/sigpending.2:76
5152 msgid ""
5153 "A child created via B<fork>(2)  initially has an empty pending signal set; "
5154 "the pending signal set is preserved across an B<execve>(2)."
5155 msgstr ""
5156
5157 #. type: SS
5158 #: build/C/man7/signal.7:220
5159 #, no-wrap
5160 msgid "Standard Signals"
5161 msgstr ""
5162
5163 #.  parisc is a law unto itself
5164 #. type: Plain text
5165 #: build/C/man7/signal.7:230
5166 msgid ""
5167 "Linux supports the standard signals listed below.  Several signal numbers "
5168 "are architecture-dependent, as indicated in the \"Value\" column.  (Where "
5169 "three values are given, the first one is usually valid for alpha and sparc, "
5170 "the middle one for ix86, ia64, ppc, s390, arm and sh, and the last one for "
5171 "mips.  A - denotes that a signal is absent on the corresponding "
5172 "architecture.)"
5173 msgstr ""
5174
5175 #. type: Plain text
5176 #: build/C/man7/signal.7:232
5177 msgid "First the signals described in the original POSIX.1-1990 standard."
5178 msgstr ""
5179
5180 #. type: tbl table
5181 #: build/C/man7/signal.7:236 build/C/man7/signal.7:272 build/C/man7/signal.7:301
5182 #, no-wrap
5183 msgid "Signal\tValue\tAction\tComment\n"
5184 msgstr ""
5185
5186 #. type: tbl table
5187 #: build/C/man7/signal.7:237
5188 #, no-wrap
5189 msgid "SIGHUP\t\\01\tTerm\tHangup detected on controlling terminal\n"
5190 msgstr ""
5191
5192 #. type: tbl table
5193 #: build/C/man7/signal.7:238
5194 #, no-wrap
5195 msgid "\t\t\tor death of controlling process\n"
5196 msgstr ""
5197
5198 #. type: tbl table
5199 #: build/C/man7/signal.7:239
5200 #, no-wrap
5201 msgid "SIGINT\t\\02\tTerm\tInterrupt from keyboard\n"
5202 msgstr ""
5203
5204 #. type: tbl table
5205 #: build/C/man7/signal.7:240
5206 #, no-wrap
5207 msgid "SIGQUIT\t\\03\tCore\tQuit from keyboard\n"
5208 msgstr ""
5209
5210 #. type: tbl table
5211 #: build/C/man7/signal.7:241
5212 #, no-wrap
5213 msgid "SIGILL\t\\04\tCore\tIllegal Instruction\n"
5214 msgstr ""
5215
5216 #. type: tbl table
5217 #: build/C/man7/signal.7:242
5218 #, no-wrap
5219 msgid "SIGABRT\t\\06\tCore\tAbort signal from B<abort>(3)\n"
5220 msgstr ""
5221
5222 #. type: tbl table
5223 #: build/C/man7/signal.7:243
5224 #, no-wrap
5225 msgid "SIGFPE\t\\08\tCore\tFloating point exception\n"
5226 msgstr ""
5227
5228 #. type: tbl table
5229 #: build/C/man7/signal.7:244
5230 #, no-wrap
5231 msgid "SIGKILL\t\\09\tTerm\tKill signal\n"
5232 msgstr ""
5233
5234 #. type: tbl table
5235 #: build/C/man7/signal.7:245
5236 #, no-wrap
5237 msgid "SIGSEGV\t11\tCore\tInvalid memory reference\n"
5238 msgstr ""
5239
5240 #. type: tbl table
5241 #: build/C/man7/signal.7:246
5242 #, no-wrap
5243 msgid "SIGPIPE\t13\tTerm\tBroken pipe: write to pipe with no\n"
5244 msgstr ""
5245
5246 #. type: tbl table
5247 #: build/C/man7/signal.7:247
5248 #, no-wrap
5249 msgid "\t\t\treaders\n"
5250 msgstr ""
5251
5252 #. type: tbl table
5253 #: build/C/man7/signal.7:248
5254 #, no-wrap
5255 msgid "SIGALRM\t14\tTerm\tTimer signal from B<alarm>(2)\n"
5256 msgstr ""
5257
5258 #. type: tbl table
5259 #: build/C/man7/signal.7:249
5260 #, no-wrap
5261 msgid "SIGTERM\t15\tTerm\tTermination signal\n"
5262 msgstr ""
5263
5264 #. type: tbl table
5265 #: build/C/man7/signal.7:250
5266 #, no-wrap
5267 msgid "SIGUSR1\t30,10,16\tTerm\tUser-defined signal 1\n"
5268 msgstr ""
5269
5270 #. type: tbl table
5271 #: build/C/man7/signal.7:251
5272 #, no-wrap
5273 msgid "SIGUSR2\t31,12,17\tTerm\tUser-defined signal 2\n"
5274 msgstr ""
5275
5276 #. type: tbl table
5277 #: build/C/man7/signal.7:252
5278 #, no-wrap
5279 msgid "SIGCHLD\t20,17,18\tIgn\tChild stopped or terminated\n"
5280 msgstr ""
5281
5282 #. type: tbl table
5283 #: build/C/man7/signal.7:253
5284 #, no-wrap
5285 msgid "SIGCONT\t19,18,25\tCont\tContinue if stopped\n"
5286 msgstr ""
5287
5288 #. type: tbl table
5289 #: build/C/man7/signal.7:254
5290 #, no-wrap
5291 msgid "SIGSTOP\t17,19,23\tStop\tStop process\n"
5292 msgstr ""
5293
5294 #. type: tbl table
5295 #: build/C/man7/signal.7:255
5296 #, no-wrap
5297 msgid "SIGTSTP\t18,20,24\tStop\tStop typed at tty\n"
5298 msgstr ""
5299
5300 #. type: tbl table
5301 #: build/C/man7/signal.7:256
5302 #, no-wrap
5303 msgid "SIGTTIN\t21,21,26\tStop\ttty input for background process\n"
5304 msgstr ""
5305
5306 #. type: tbl table
5307 #: build/C/man7/signal.7:257
5308 #, no-wrap
5309 msgid "SIGTTOU\t22,22,27\tStop\ttty output for background process\n"
5310 msgstr ""
5311
5312 #. type: Plain text
5313 #: build/C/man7/signal.7:265
5314 msgid "The signals B<SIGKILL> and B<SIGSTOP> cannot be caught, blocked, or ignored."
5315 msgstr ""
5316
5317 #. type: Plain text
5318 #: build/C/man7/signal.7:268
5319 msgid ""
5320 "Next the signals not in the POSIX.1-1990 standard but described in SUSv2 and "
5321 "POSIX.1-2001."
5322 msgstr ""
5323
5324 #. type: tbl table
5325 #: build/C/man7/signal.7:273
5326 #, no-wrap
5327 msgid "SIGBUS\t10,7,10\tCore\tBus error (bad memory access)\n"
5328 msgstr ""
5329
5330 #. type: tbl table
5331 #: build/C/man7/signal.7:274
5332 #, no-wrap
5333 msgid "SIGPOLL\t\tTerm\tPollable event (Sys V).\n"
5334 msgstr ""
5335
5336 #. type: tbl table
5337 #: build/C/man7/signal.7:275
5338 #, no-wrap
5339 msgid "\t\t\tSynonym for B<SIGIO>\n"
5340 msgstr ""
5341
5342 #. type: tbl table
5343 #: build/C/man7/signal.7:276
5344 #, no-wrap
5345 msgid "SIGPROF\t27,27,29\tTerm\tProfiling timer expired\n"
5346 msgstr ""
5347
5348 #. type: tbl table
5349 #: build/C/man7/signal.7:277
5350 #, no-wrap
5351 msgid "SIGSYS\t12,31,12\tCore\tBad argument to routine (SVr4)\n"
5352 msgstr ""
5353
5354 #. type: tbl table
5355 #: build/C/man7/signal.7:278
5356 #, no-wrap
5357 msgid "SIGTRAP\t5\tCore\tTrace/breakpoint trap\n"
5358 msgstr ""
5359
5360 #. type: tbl table
5361 #: build/C/man7/signal.7:279
5362 #, no-wrap
5363 msgid "SIGURG\t16,23,21\tIgn\tUrgent condition on socket (4.2BSD)\n"
5364 msgstr ""
5365
5366 #. type: tbl table
5367 #: build/C/man7/signal.7:280
5368 #, no-wrap
5369 msgid "SIGVTALRM\t26,26,28\tTerm\tVirtual alarm clock (4.2BSD)\n"
5370 msgstr ""
5371
5372 #. type: tbl table
5373 #: build/C/man7/signal.7:281
5374 #, no-wrap
5375 msgid "SIGXCPU\t24,24,30\tCore\tCPU time limit exceeded (4.2BSD)\n"
5376 msgstr ""
5377
5378 #. type: tbl table
5379 #: build/C/man7/signal.7:282
5380 #, no-wrap
5381 msgid "SIGXFSZ\t25,25,31\tCore\tFile size limit exceeded (4.2BSD)\n"
5382 msgstr ""
5383
5384 #. type: Plain text
5385 #: build/C/man7/signal.7:295
5386 msgid ""
5387 "Up to and including Linux 2.2, the default behavior for B<SIGSYS>, "
5388 "B<SIGXCPU>, B<SIGXFSZ>, and (on architectures other than SPARC and MIPS)  "
5389 "B<SIGBUS> was to terminate the process (without a core dump).  (On some "
5390 "other UNIX systems the default action for B<SIGXCPU> and B<SIGXFSZ> is to "
5391 "terminate the process without a core dump.)  Linux 2.4 conforms to the "
5392 "POSIX.1-2001 requirements for these signals, terminating the process with a "
5393 "core dump."
5394 msgstr ""
5395
5396 #. type: Plain text
5397 #: build/C/man7/signal.7:297
5398 msgid "Next various other signals."
5399 msgstr ""
5400
5401 #. type: tbl table
5402 #: build/C/man7/signal.7:302
5403 #, no-wrap
5404 msgid "SIGIOT\t6\tCore\tIOT trap. A synonym for B<SIGABRT>\n"
5405 msgstr ""
5406
5407 #. type: tbl table
5408 #: build/C/man7/signal.7:303
5409 #, no-wrap
5410 msgid "SIGEMT\t7,-,7\tTerm\n"
5411 msgstr ""
5412
5413 #. type: tbl table
5414 #: build/C/man7/signal.7:304
5415 #, no-wrap
5416 msgid "SIGSTKFLT\t-,16,-\tTerm\tStack fault on coprocessor (unused)\n"
5417 msgstr ""
5418
5419 #. type: tbl table
5420 #: build/C/man7/signal.7:305
5421 #, no-wrap
5422 msgid "SIGIO\t23,29,22\tTerm\tI/O now possible (4.2BSD)\n"
5423 msgstr ""
5424
5425 #. type: tbl table
5426 #: build/C/man7/signal.7:306
5427 #, no-wrap
5428 msgid "SIGCLD\t-,-,18\tIgn\tA synonym for B<SIGCHLD>\n"
5429 msgstr ""
5430
5431 #. type: tbl table
5432 #: build/C/man7/signal.7:307
5433 #, no-wrap
5434 msgid "SIGPWR\t29,30,19\tTerm\tPower failure (System V)\n"
5435 msgstr ""
5436
5437 #. type: tbl table
5438 #: build/C/man7/signal.7:308
5439 #, no-wrap
5440 msgid "SIGINFO\t29,-,-\t\tA synonym for B<SIGPWR>\n"
5441 msgstr ""
5442
5443 #. type: tbl table
5444 #: build/C/man7/signal.7:309
5445 #, no-wrap
5446 msgid "SIGLOST\t-,-,-\tTerm\tFile lock lost\n"
5447 msgstr ""
5448
5449 #. type: tbl table
5450 #: build/C/man7/signal.7:310
5451 #, no-wrap
5452 msgid "SIGWINCH\t28,28,20\tIgn\tWindow resize signal (4.3BSD, Sun)\n"
5453 msgstr ""
5454
5455 #. type: tbl table
5456 #: build/C/man7/signal.7:311
5457 #, no-wrap
5458 msgid "SIGUNUSED\t-,31,-\tCore\tSynonymous with B<SIGSYS>\n"
5459 msgstr ""
5460
5461 #. type: Plain text
5462 #: build/C/man7/signal.7:321
5463 msgid "(Signal 29 is B<SIGINFO> / B<SIGPWR> on an alpha but B<SIGLOST> on a sparc.)"
5464 msgstr ""
5465
5466 #. type: Plain text
5467 #: build/C/man7/signal.7:327
5468 msgid ""
5469 "B<SIGEMT> is not specified in POSIX.1-2001, but nevertheless appears on most "
5470 "other UNIX systems, where its default action is typically to terminate the "
5471 "process with a core dump."
5472 msgstr ""
5473
5474 #. type: Plain text
5475 #: build/C/man7/signal.7:331
5476 msgid ""
5477 "B<SIGPWR> (which is not specified in POSIX.1-2001) is typically ignored by "
5478 "default on those other UNIX systems where it appears."
5479 msgstr ""
5480
5481 #. type: Plain text
5482 #: build/C/man7/signal.7:335
5483 msgid ""
5484 "B<SIGIO> (which is not specified in POSIX.1-2001) is ignored by default on "
5485 "several other UNIX systems."
5486 msgstr ""
5487
5488 #.  parisc is the only exception: SIGSYS is 12, SIGUNUSED is 31
5489 #. type: Plain text
5490 #: build/C/man7/signal.7:342
5491 msgid ""
5492 "Where defined, B<SIGUNUSED> is synonymous with B<SIGSYS> on most "
5493 "architectures."
5494 msgstr ""
5495
5496 #. type: SS
5497 #: build/C/man7/signal.7:342
5498 #, no-wrap
5499 msgid "Real-time Signals"
5500 msgstr ""
5501
5502 #. type: Plain text
5503 #: build/C/man7/signal.7:352
5504 msgid ""
5505 "Linux supports real-time signals as originally defined in the POSIX.1b "
5506 "real-time extensions (and now included in POSIX.1-2001).  The range of "
5507 "supported real-time signals is defined by the macros B<SIGRTMIN> and "
5508 "B<SIGRTMAX>.  POSIX.1-2001 requires that an implementation support at least "
5509 "B<_POSIX_RTSIG_MAX> (8) real-time signals."
5510 msgstr ""
5511
5512 #. type: Plain text
5513 #: build/C/man7/signal.7:374
5514 msgid ""
5515 "The Linux kernel supports a range of 32 different real-time signals, "
5516 "numbered 33 to 64.  However, the glibc POSIX threads implementation "
5517 "internally uses two (for NPTL) or three (for LinuxThreads) real-time signals "
5518 "(see B<pthreads>(7)), and adjusts the value of B<SIGRTMIN> suitably (to 34 "
5519 "or 35).  Because the range of available real-time signals varies according "
5520 "to the glibc threading implementation (and this variation can occur at run "
5521 "time according to the available kernel and glibc), and indeed the range of "
5522 "real-time signals varies across UNIX systems, programs should I<never refer "
5523 "to real-time signals using hard-coded numbers>, but instead should always "
5524 "refer to real-time signals using the notation B<SIGRTMIN>+n, and include "
5525 "suitable (run-time) checks that B<SIGRTMIN>+n does not exceed B<SIGRTMAX>."
5526 msgstr ""
5527
5528 #. type: Plain text
5529 #: build/C/man7/signal.7:378
5530 msgid ""
5531 "Unlike standard signals, real-time signals have no predefined meanings: the "
5532 "entire set of real-time signals can be used for application-defined "
5533 "purposes."
5534 msgstr ""
5535
5536 #. type: Plain text
5537 #: build/C/man7/signal.7:381
5538 msgid ""
5539 "The default action for an unhandled real-time signal is to terminate the "
5540 "receiving process."
5541 msgstr ""
5542
5543 #. type: Plain text
5544 #: build/C/man7/signal.7:383
5545 msgid "Real-time signals are distinguished by the following:"
5546 msgstr ""
5547
5548 #. type: Plain text
5549 #: build/C/man7/signal.7:387
5550 msgid ""
5551 "Multiple instances of real-time signals can be queued.  By contrast, if "
5552 "multiple instances of a standard signal are delivered while that signal is "
5553 "currently blocked, then only one instance is queued."
5554 msgstr ""
5555
5556 #. type: Plain text
5557 #: build/C/man7/signal.7:407
5558 msgid ""
5559 "If the signal is sent using B<sigqueue>(3), an accompanying value (either an "
5560 "integer or a pointer) can be sent with the signal.  If the receiving process "
5561 "establishes a handler for this signal using the B<SA_SIGINFO> flag to "
5562 "B<sigaction>(2)  then it can obtain this data via the I<si_value> field of "
5563 "the I<siginfo_t> structure passed as the second argument to the handler.  "
5564 "Furthermore, the I<si_pid> and I<si_uid> fields of this structure can be "
5565 "used to obtain the PID and real user ID of the process sending the signal."
5566 msgstr ""
5567
5568 #. type: Plain text
5569 #: build/C/man7/signal.7:416
5570 msgid ""
5571 "Real-time signals are delivered in a guaranteed order.  Multiple real-time "
5572 "signals of the same type are delivered in the order they were sent.  If "
5573 "different real-time signals are sent to a process, they are delivered "
5574 "starting with the lowest-numbered signal.  (I.e., low-numbered signals have "
5575 "highest priority.)  By contrast, if multiple standard signals are pending "
5576 "for a process, the order in which they are delivered is unspecified."
5577 msgstr ""
5578
5579 #. type: Plain text
5580 #: build/C/man7/signal.7:421
5581 msgid ""
5582 "If both standard and real-time signals are pending for a process, POSIX "
5583 "leaves it unspecified which is delivered first.  Linux, like many other "
5584 "implementations, gives priority to standard signals in this case."
5585 msgstr ""
5586
5587 #. type: Plain text
5588 #: build/C/man7/signal.7:444
5589 msgid ""
5590 "According to POSIX, an implementation should permit at least "
5591 "B<_POSIX_SIGQUEUE_MAX> (32) real-time signals to be queued to a process.  "
5592 "However, Linux does things differently.  In kernels up to and including "
5593 "2.6.7, Linux imposes a system-wide limit on the number of queued real-time "
5594 "signals for all processes.  This limit can be viewed and (with privilege) "
5595 "changed via the I</proc/sys/kernel/rtsig-max> file.  A related file, "
5596 "I</proc/sys/kernel/rtsig-nr>, can be used to find out how many real-time "
5597 "signals are currently queued.  In Linux 2.6.8, these I</proc> interfaces "
5598 "were replaced by the B<RLIMIT_SIGPENDING> resource limit, which specifies a "
5599 "per-user limit for queued signals; see B<setrlimit>(2)  for further details."
5600 msgstr ""
5601
5602 #. type: SS
5603 #: build/C/man7/signal.7:444
5604 #, no-wrap
5605 msgid "Async-signal-safe functions"
5606 msgstr ""
5607
5608 #. type: Plain text
5609 #: build/C/man7/signal.7:453
5610 msgid ""
5611 "A signal handler function must be very careful, since processing elsewhere "
5612 "may be interrupted at some arbitrary point in the execution of the program.  "
5613 "POSIX has the concept of \"safe function\".  If a signal interrupts the "
5614 "execution of an unsafe function, and I<handler> calls an unsafe function, "
5615 "then the behavior of the program is undefined."
5616 msgstr ""
5617
5618 #. type: Plain text
5619 #: build/C/man7/signal.7:457
5620 msgid ""
5621 "POSIX.1-2004 (also known as POSIX.1-2001 Technical Corrigendum 2)  requires "
5622 "an implementation to guarantee that the following functions can be safely "
5623 "called inside a signal handler:"
5624 msgstr ""
5625
5626 #. type: Plain text
5627 #: build/C/man7/signal.7:578
5628 #, no-wrap
5629 msgid ""
5630 "_Exit()\n"
5631 "_exit()\n"
5632 "abort()\n"
5633 "accept()\n"
5634 "access()\n"
5635 "aio_error()\n"
5636 "aio_return()\n"
5637 "aio_suspend()\n"
5638 "alarm()\n"
5639 "bind()\n"
5640 "cfgetispeed()\n"
5641 "cfgetospeed()\n"
5642 "cfsetispeed()\n"
5643 "cfsetospeed()\n"
5644 "chdir()\n"
5645 "chmod()\n"
5646 "chown()\n"
5647 "clock_gettime()\n"
5648 "close()\n"
5649 "connect()\n"
5650 "creat()\n"
5651 "dup()\n"
5652 "dup2()\n"
5653 "execle()\n"
5654 "execve()\n"
5655 "fchmod()\n"
5656 "fchown()\n"
5657 "fcntl()\n"
5658 "fdatasync()\n"
5659 "fork()\n"
5660 "fpathconf()\n"
5661 "fstat()\n"
5662 "fsync()\n"
5663 "ftruncate()\n"
5664 "getegid()\n"
5665 "geteuid()\n"
5666 "getgid()\n"
5667 "getgroups()\n"
5668 "getpeername()\n"
5669 "getpgrp()\n"
5670 "getpid()\n"
5671 "getppid()\n"
5672 "getsockname()\n"
5673 "getsockopt()\n"
5674 "getuid()\n"
5675 "kill()\n"
5676 "link()\n"
5677 "listen()\n"
5678 "lseek()\n"
5679 "lstat()\n"
5680 "mkdir()\n"
5681 "mkfifo()\n"
5682 "open()\n"
5683 "pathconf()\n"
5684 "pause()\n"
5685 "pipe()\n"
5686 "poll()\n"
5687 "posix_trace_event()\n"
5688 "pselect()\n"
5689 "raise()\n"
5690 "read()\n"
5691 "readlink()\n"
5692 "recv()\n"
5693 "recvfrom()\n"
5694 "recvmsg()\n"
5695 "rename()\n"
5696 "rmdir()\n"
5697 "select()\n"
5698 "sem_post()\n"
5699 "send()\n"
5700 "sendmsg()\n"
5701 "sendto()\n"
5702 "setgid()\n"
5703 "setpgid()\n"
5704 "setsid()\n"
5705 "setsockopt()\n"
5706 "setuid()\n"
5707 "shutdown()\n"
5708 "sigaction()\n"
5709 "sigaddset()\n"
5710 "sigdelset()\n"
5711 "sigemptyset()\n"
5712 "sigfillset()\n"
5713 "sigismember()\n"
5714 "signal()\n"
5715 "sigpause()\n"
5716 "sigpending()\n"
5717 "sigprocmask()\n"
5718 "sigqueue()\n"
5719 "sigset()\n"
5720 "sigsuspend()\n"
5721 "sleep()\n"
5722 "sockatmark()\n"
5723 "socket()\n"
5724 "socketpair()\n"
5725 "stat()\n"
5726 "symlink()\n"
5727 "sysconf()\n"
5728 "tcdrain()\n"
5729 "tcflow()\n"
5730 "tcflush()\n"
5731 "tcgetattr()\n"
5732 "tcgetpgrp()\n"
5733 "tcsendbreak()\n"
5734 "tcsetattr()\n"
5735 "tcsetpgrp()\n"
5736 "time()\n"
5737 "timer_getoverrun()\n"
5738 "timer_gettime()\n"
5739 "timer_settime()\n"
5740 "times()\n"
5741 "umask()\n"
5742 "uname()\n"
5743 "unlink()\n"
5744 "utime()\n"
5745 "wait()\n"
5746 "waitpid()\n"
5747 "write()\n"
5748 msgstr ""
5749
5750 #. type: Plain text
5751 #: build/C/man7/signal.7:583
5752 msgid ""
5753 "POSIX.1-2008 removes fpathconf(), pathconf(), and sysconf()  from the above "
5754 "list, and adds the following functions:"
5755 msgstr ""
5756
5757 #. type: Plain text
5758 #: build/C/man7/signal.7:606
5759 #, no-wrap
5760 msgid ""
5761 "execl()\n"
5762 "execv()\n"
5763 "faccessat()\n"
5764 "fchmodat()\n"
5765 "fchownat()\n"
5766 "fexecve()\n"
5767 "fstatat()\n"
5768 "futimens()\n"
5769 "linkat()\n"
5770 "mkdirat()\n"
5771 "mkfifoat()\n"
5772 "mknod()\n"
5773 "mknodat()\n"
5774 "openat()\n"
5775 "readlinkat()\n"
5776 "renameat()\n"
5777 "symlinkat()\n"
5778 "unlinkat()\n"
5779 "utimensat()\n"
5780 "utimes()\n"
5781 msgstr ""
5782
5783 #. type: SS
5784 #: build/C/man7/signal.7:608
5785 #, no-wrap
5786 msgid "Interruption of System Calls and Library Functions by Signal Handlers"
5787 msgstr ""
5788
5789 #. type: Plain text
5790 #: build/C/man7/signal.7:611
5791 msgid ""
5792 "If a signal handler is invoked while a system call or library function call "
5793 "is blocked, then either:"
5794 msgstr ""
5795
5796 #. type: Plain text
5797 #: build/C/man7/signal.7:613
5798 msgid "the call is automatically restarted after the signal handler returns; or"
5799 msgstr ""
5800
5801 #. type: Plain text
5802 #: build/C/man7/signal.7:616
5803 msgid "the call fails with the error B<EINTR>."
5804 msgstr ""
5805
5806 #. type: Plain text
5807 #: build/C/man7/signal.7:624
5808 msgid ""
5809 "Which of these two behaviors occurs depends on the interface and whether or "
5810 "not the signal handler was established using the B<SA_RESTART> flag (see "
5811 "B<sigaction>(2)).  The details vary across UNIX systems; below, the details "
5812 "for Linux."
5813 msgstr ""
5814
5815 #.  The following system calls use ERESTARTSYS,
5816 #.  so that they are restartable
5817 #. type: Plain text
5818 #: build/C/man7/signal.7:633
5819 msgid ""
5820 "If a blocked call to one of the following interfaces is interrupted by a "
5821 "signal handler, then the call will be automatically restarted after the "
5822 "signal handler returns if the B<SA_RESTART> flag was used; otherwise the "
5823 "call will fail with the error B<EINTR>:"
5824 msgstr ""
5825
5826 #. type: Plain text
5827 #: build/C/man7/signal.7:649
5828 msgid ""
5829 "B<read>(2), B<readv>(2), B<write>(2), B<writev>(2), and B<ioctl>(2)  calls "
5830 "on \"slow\" devices.  A \"slow\" device is one where the I/O call may block "
5831 "for an indefinite time, for example, a terminal, pipe, or socket.  (A disk "
5832 "is not a slow device according to this definition.)  If an I/O call on a "
5833 "slow device has already transferred some data by the time it is interrupted "
5834 "by a signal handler, then the call will return a success status (normally, "
5835 "the number of bytes transferred)."
5836 msgstr ""
5837
5838 #. type: Plain text
5839 #: build/C/man7/signal.7:653
5840 msgid "B<open>(2), if it can block (e.g., when opening a FIFO; see B<fifo>(7))."
5841 msgstr ""
5842
5843 #. type: Plain text
5844 #: build/C/man7/signal.7:660
5845 msgid "B<wait>(2), B<wait3>(2), B<wait4>(2), B<waitid>(2), and B<waitpid>(2)."
5846 msgstr ""
5847
5848 #.  If a timeout (setsockopt()) is in effect on the socket, then these
5849 #.  system calls switch to using EINTR.  Consequently, they and are not
5850 #.  automatically restarted, and they show the stop/cont behavior
5851 #.  described below.  (Verified from 2.6.26 source, and by experiment; mtk)
5852 #. type: Plain text
5853 #: build/C/man7/signal.7:676
5854 msgid ""
5855 "Socket interfaces: B<accept>(2), B<connect>(2), B<recv>(2), B<recvfrom>(2), "
5856 "B<recvmsg>(2), B<send>(2), B<sendto>(2), and B<sendmsg>(2), unless a timeout "
5857 "has been set on the socket (see below)."
5858 msgstr ""
5859
5860 #. type: Plain text
5861 #: build/C/man7/signal.7:682
5862 msgid "File locking interfaces: B<flock>(2)  and B<fcntl>(2)  B<F_SETLKW>."
5863 msgstr ""
5864
5865 #. type: Plain text
5866 #: build/C/man7/signal.7:689
5867 msgid ""
5868 "POSIX message queue interfaces: B<mq_receive>(3), B<mq_timedreceive>(3), "
5869 "B<mq_send>(3), and B<mq_timedsend>(3)."
5870 msgstr ""
5871
5872 #. type: Plain text
5873 #: build/C/man7/signal.7:694
5874 msgid ""
5875 "B<futex>(2)  B<FUTEX_WAIT> (since Linux 2.6.22; beforehand, always failed "
5876 "with B<EINTR>)."
5877 msgstr ""
5878
5879 #. type: Plain text
5880 #: build/C/man7/signal.7:701
5881 msgid ""
5882 "POSIX semaphore interfaces: B<sem_wait>(3)  and B<sem_timedwait>(3)  (since "
5883 "Linux 2.6.22; beforehand, always failed with B<EINTR>)."
5884 msgstr ""
5885
5886 #.  These are the system calls that give EINTR or ERESTARTNOHAND
5887 #.  on interruption by a signal handler.
5888 #. type: Plain text
5889 #: build/C/man7/signal.7:712
5890 msgid ""
5891 "The following interfaces are never restarted after being interrupted by a "
5892 "signal handler, regardless of the use of B<SA_RESTART>; they always fail "
5893 "with the error B<EINTR> when interrupted by a signal handler:"
5894 msgstr ""
5895
5896 #. type: Plain text
5897 #: build/C/man7/signal.7:732 build/C/man7/signal.7:806
5898 msgid ""
5899 "Socket interfaces, when a timeout has been set on the socket using "
5900 "B<setsockopt>(2): B<accept>(2), B<recv>(2), B<recvfrom>(2), and "
5901 "B<recvmsg>(2), if a receive timeout (B<SO_RCVTIMEO>)  has been set; "
5902 "B<connect>(2), B<send>(2), B<sendto>(2), and B<sendmsg>(2), if a send "
5903 "timeout (B<SO_SNDTIMEO>)  has been set."
5904 msgstr ""
5905
5906 #. type: Plain text
5907 #: build/C/man7/signal.7:739
5908 msgid ""
5909 "Interfaces used to wait for signals: B<pause>(2), B<sigsuspend>(2), "
5910 "B<sigtimedwait>(2), and B<sigwaitinfo>(2)."
5911 msgstr ""
5912
5913 #. type: Plain text
5914 #: build/C/man7/signal.7:748
5915 msgid ""
5916 "File descriptor multiplexing interfaces: B<epoll_wait>(2), "
5917 "B<epoll_pwait>(2), B<poll>(2), B<ppoll>(2), B<select>(2), and B<pselect>(2)."
5918 msgstr ""
5919
5920 #.  On some other systems, SA_RESTART does restart these system calls
5921 #. type: Plain text
5922 #: build/C/man7/signal.7:756
5923 msgid ""
5924 "System V IPC interfaces: B<msgrcv>(2), B<msgsnd>(2), B<semop>(2), and "
5925 "B<semtimedop>(2)."
5926 msgstr ""
5927
5928 #. type: Plain text
5929 #: build/C/man7/signal.7:762
5930 msgid "Sleep interfaces: B<clock_nanosleep>(2), B<nanosleep>(2), and B<usleep>(3)."
5931 msgstr ""
5932
5933 #. type: Plain text
5934 #: build/C/man7/signal.7:767 build/C/man7/signal.7:820
5935 msgid "B<read>(2)  from an B<inotify>(7)  file descriptor."
5936 msgstr ""
5937
5938 #. type: Plain text
5939 #: build/C/man7/signal.7:769
5940 msgid "B<io_getevents>(2)."
5941 msgstr ""
5942
5943 #. type: Plain text
5944 #: build/C/man7/signal.7:775
5945 msgid ""
5946 "The B<sleep>(3)  function is also never restarted if interrupted by a "
5947 "handler, but gives a success return: the number of seconds remaining to "
5948 "sleep."
5949 msgstr ""
5950
5951 #. type: SS
5952 #: build/C/man7/signal.7:775
5953 #, no-wrap
5954 msgid "Interruption of System Calls and Library Functions by Stop Signals"
5955 msgstr ""
5956
5957 #. type: Plain text
5958 #: build/C/man7/signal.7:784
5959 msgid ""
5960 "On Linux, even in the absence of signal handlers, certain blocking "
5961 "interfaces can fail with the error B<EINTR> after the process is stopped by "
5962 "one of the stop signals and then resumed via B<SIGCONT>.  This behavior is "
5963 "not sanctioned by POSIX.1, and doesn't occur on other systems."
5964 msgstr ""
5965
5966 #. type: Plain text
5967 #: build/C/man7/signal.7:786
5968 msgid "The Linux interfaces that display this behavior are:"
5969 msgstr ""
5970
5971 #. type: Plain text
5972 #: build/C/man7/signal.7:809
5973 msgid "B<epoll_wait>(2), B<epoll_pwait>(2)."
5974 msgstr ""
5975
5976 #. type: Plain text
5977 #: build/C/man7/signal.7:812
5978 msgid "B<semop>(2), B<semtimedop>(2)."
5979 msgstr ""
5980
5981 #. type: Plain text
5982 #: build/C/man7/signal.7:815
5983 msgid "B<sigtimedwait>(2), B<sigwaitinfo>(2)."
5984 msgstr ""
5985
5986 #. type: Plain text
5987 #: build/C/man7/signal.7:826
5988 msgid ""
5989 "Linux 2.6.21 and earlier: B<futex>(2)  B<FUTEX_WAIT>, B<sem_timedwait>(3), "
5990 "B<sem_wait>(3)."
5991 msgstr ""
5992
5993 #. type: Plain text
5994 #: build/C/man7/signal.7:830
5995 msgid "Linux 2.6.8 and earlier: B<msgrcv>(2), B<msgsnd>(2)."
5996 msgstr ""
5997
5998 #. type: Plain text
5999 #: build/C/man7/signal.7:833
6000 msgid "Linux 2.4 and earlier: B<nanosleep>(2)."
6001 msgstr ""
6002
6003 #. type: Plain text
6004 #: build/C/man7/signal.7:836
6005 msgid "POSIX.1, except as noted."
6006 msgstr ""
6007
6008 #. type: Plain text
6009 #: build/C/man7/signal.7:845
6010 msgid ""
6011 "B<SIGIO> and B<SIGLOST> have the same value.  The latter is commented out in "
6012 "the kernel source, but the build process of some software still thinks that "
6013 "signal 29 is B<SIGLOST>."
6014 msgstr ""
6015
6016 #. type: Plain text
6017 #: build/C/man7/signal.7:878
6018 msgid ""
6019 "B<kill>(1), B<getrlimit>(2), B<kill>(2), B<killpg>(2), "
6020 "B<rt_sigqueueinfo>(2), B<setitimer>(2), B<setrlimit>(2), B<sgetmask>(2), "
6021 "B<sigaction>(2), B<sigaltstack>(2), B<signal>(2), B<signalfd>(2), "
6022 "B<sigpending>(2), B<sigprocmask>(2), B<sigsuspend>(2), B<sigwaitinfo>(2), "
6023 "B<abort>(3), B<bsd_signal>(3), B<longjmp>(3), B<raise>(3), "
6024 "B<pthread_sigqueue>(3), B<sigqueue>(3), B<sigset>(3), B<sigsetops>(3), "
6025 "B<sigvec>(3), B<sigwait>(3), B<strsignal>(3), B<sysv_signal>(3), B<core>(5), "
6026 "B<proc>(5), B<pthreads>(7), B<sigevent>(7)"
6027 msgstr ""
6028
6029 #. type: TH
6030 #: build/C/man2/signalfd.2:19
6031 #, no-wrap
6032 msgid "SIGNALFD"
6033 msgstr ""
6034
6035 #. type: TH
6036 #: build/C/man2/signalfd.2:19
6037 #, no-wrap
6038 msgid "2009-01-13"
6039 msgstr ""
6040
6041 #. type: Plain text
6042 #: build/C/man2/signalfd.2:22
6043 msgid "signalfd - create a file descriptor for accepting signals"
6044 msgstr ""
6045
6046 #. type: Plain text
6047 #: build/C/man2/signalfd.2:24
6048 msgid "B<#include E<lt>sys/signalfd.hE<gt>>"
6049 msgstr ""
6050
6051 #. type: Plain text
6052 #: build/C/man2/signalfd.2:26
6053 msgid "B<int signalfd(int >I<fd>B<, const sigset_t *>I<mask>B<, int >I<flags>B<);>"
6054 msgstr ""
6055
6056 #. type: Plain text
6057 #: build/C/man2/signalfd.2:37
6058 msgid ""
6059 "B<signalfd>()  creates a file descriptor that can be used to accept signals "
6060 "targeted at the caller.  This provides an alternative to the use of a signal "
6061 "handler or B<sigwaitinfo>(2), and has the advantage that the file descriptor "
6062 "may be monitored by B<select>(2), B<poll>(2), and B<epoll>(7)."
6063 msgstr ""
6064
6065 #. type: Plain text
6066 #: build/C/man2/signalfd.2:57
6067 msgid ""
6068 "The I<mask> argument specifies the set of signals that the caller wishes to "
6069 "accept via the file descriptor.  This argument is a signal set whose "
6070 "contents can be initialized using the macros described in B<sigsetops>(3).  "
6071 "Normally, the set of signals to be received via the file descriptor should "
6072 "be blocked using B<sigprocmask>(2), to prevent the signals being handled "
6073 "according to their default dispositions.  It is not possible to receive "
6074 "B<SIGKILL> or B<SIGSTOP> signals via a signalfd file descriptor; these "
6075 "signals are silently ignored if specified in I<mask>."
6076 msgstr ""
6077
6078 #. type: Plain text
6079 #: build/C/man2/signalfd.2:71
6080 msgid ""
6081 "If the I<fd> argument is -1, then the call creates a new file descriptor and "
6082 "associates the signal set specified in I<mask> with that descriptor.  If "
6083 "I<fd> is not -1, then it must specify a valid existing signalfd file "
6084 "descriptor, and I<mask> is used to replace the signal set associated with "
6085 "that descriptor."
6086 msgstr ""
6087
6088 #. type: Plain text
6089 #: build/C/man2/signalfd.2:76
6090 msgid ""
6091 "Starting with Linux 2.6.27, the following values may be bitwise ORed in "
6092 "I<flags> to change the behaviour of B<signalfd>():"
6093 msgstr ""
6094
6095 #. type: TP
6096 #: build/C/man2/signalfd.2:76
6097 #, no-wrap
6098 msgid "B<SFD_NONBLOCK>"
6099 msgstr ""
6100
6101 #. type: TP
6102 #: build/C/man2/signalfd.2:84
6103 #, no-wrap
6104 msgid "B<SFD_CLOEXEC>"
6105 msgstr ""
6106
6107 #. type: Plain text
6108 #: build/C/man2/signalfd.2:101
6109 msgid ""
6110 "B<signalfd>()  returns a file descriptor that supports the following "
6111 "operations:"
6112 msgstr ""
6113
6114 #. type: Plain text
6115 #: build/C/man2/signalfd.2:120
6116 msgid ""
6117 "If one or more of the signals specified in I<mask> is pending for the "
6118 "process, then the buffer supplied to B<read>(2)  is used to return one or "
6119 "more I<signalfd_siginfo> structures (see below) that describe the signals.  "
6120 "The B<read>(2)  returns information for as many signals as are pending and "
6121 "will fit in the supplied buffer.  The buffer must be at least "
6122 "I<sizeof(struct signalfd_siginfo)> bytes.  The return value of the "
6123 "B<read>(2)  is the total number of bytes read."
6124 msgstr ""
6125
6126 #. type: Plain text
6127 #: build/C/man2/signalfd.2:128
6128 msgid ""
6129 "As a consequence of the B<read>(2), the signals are consumed, so that they "
6130 "are no longer pending for the process (i.e., will not be caught by signal "
6131 "handlers, and cannot be accepted using B<sigwaitinfo>(2))."
6132 msgstr ""
6133
6134 #. type: Plain text
6135 #: build/C/man2/signalfd.2:139
6136 msgid ""
6137 "If none of the signals in I<mask> is pending for the process, then the "
6138 "B<read>(2)  either blocks until one of the signals in I<mask> is generated "
6139 "for the process, or fails with the error B<EAGAIN> if the file descriptor "
6140 "has been made nonblocking."
6141 msgstr ""
6142
6143 #. type: Plain text
6144 #: build/C/man2/signalfd.2:152
6145 msgid ""
6146 "The file descriptor is readable (the B<select>(2)  I<readfds> argument; the "
6147 "B<poll>(2)  B<POLLIN> flag)  if one or more of the signals in I<mask> is "
6148 "pending for the process."
6149 msgstr ""
6150
6151 #. type: Plain text
6152 #: build/C/man2/signalfd.2:159
6153 msgid ""
6154 "The signalfd file descriptor also supports the other file-descriptor "
6155 "multiplexing APIs: B<pselect>(2), B<ppoll>(2), and B<epoll>(7)."
6156 msgstr ""
6157
6158 #. type: Plain text
6159 #: build/C/man2/signalfd.2:164
6160 msgid ""
6161 "When the file descriptor is no longer required it should be closed.  When "
6162 "all file descriptors associated with the same signalfd object have been "
6163 "closed, the resources for object are freed by the kernel."
6164 msgstr ""
6165
6166 #. type: SS
6167 #: build/C/man2/signalfd.2:164
6168 #, no-wrap
6169 msgid "The signalfd_siginfo structure"
6170 msgstr ""
6171
6172 #. type: Plain text
6173 #: build/C/man2/signalfd.2:170
6174 msgid ""
6175 "The format of the I<signalfd_siginfo> structure(s) returned by B<read>(2)s "
6176 "from a signalfd file descriptor is as follows:"
6177 msgstr ""
6178
6179 #.  ssi_trapno is unused on most arches
6180 #. type: Plain text
6181 #: build/C/man2/signalfd.2:195
6182 #, no-wrap
6183 msgid ""
6184 "struct signalfd_siginfo {\n"
6185 "    uint32_t ssi_signo;   /* Signal number */\n"
6186 "    int32_t  ssi_errno;   /* Error number (unused) */\n"
6187 "    int32_t  ssi_code;    /* Signal code */\n"
6188 "    uint32_t ssi_pid;     /* PID of sender */\n"
6189 "    uint32_t ssi_uid;     /* Real UID of sender */\n"
6190 "    int32_t  ssi_fd;      /* File descriptor (SIGIO) */\n"
6191 "    uint32_t ssi_tid;     /* Kernel timer ID (POSIX timers)\n"
6192 "    uint32_t ssi_band;    /* Band event (SIGIO) */\n"
6193 "    uint32_t ssi_overrun; /* POSIX timer overrun count */\n"
6194 "    uint32_t ssi_trapno;  /* Trap number that caused signal */\n"
6195 "    int32_t  ssi_status;  /* Exit status or signal (SIGCHLD) */\n"
6196 "    int32_t  ssi_int;     /* Integer sent by sigqueue(3) */\n"
6197 "    uint64_t ssi_ptr;     /* Pointer sent by sigqueue(3) */\n"
6198 "    uint64_t ssi_utime;   /* User CPU time consumed (SIGCHLD) */\n"
6199 "    uint64_t ssi_stime;   /* System CPU time consumed (SIGCHLD) */\n"
6200 "    uint64_t ssi_addr;    /* Address that generated signal\n"
6201 "                             (for hardware-generated signals) */\n"
6202 "    uint8_t  pad[I<X>];      /* Pad size to 128 bytes (allow for\n"
6203 "                              additional fields in the future) */\n"
6204 "};\n"
6205 msgstr ""
6206
6207 #. type: Plain text
6208 #: build/C/man2/signalfd.2:218
6209 msgid ""
6210 "Each of the fields in this structure is analogous to the similarly named "
6211 "field in the I<siginfo_t> structure.  The I<siginfo_t> structure is "
6212 "described in B<sigaction>(2).  Not all fields in the returned "
6213 "I<signalfd_siginfo> structure will be valid for a specific signal; the set "
6214 "of valid fields can be determined from the value returned in the I<ssi_code> "
6215 "field.  This field is the analog of the I<siginfo_t> I<si_code> field; see "
6216 "B<sigaction>(2)  for details."
6217 msgstr ""
6218
6219 #. type: SS
6220 #: build/C/man2/signalfd.2:218 build/C/man2/timerfd_create.2:268
6221 #, no-wrap
6222 msgid "fork(2) semantics"
6223 msgstr ""
6224
6225 #. type: Plain text
6226 #: build/C/man2/signalfd.2:226
6227 msgid ""
6228 "After a B<fork>(2), the child inherits a copy of the signalfd file "
6229 "descriptor.  A B<read>(2)  from the file descriptor in the child will return "
6230 "information about signals queued to the child."
6231 msgstr ""
6232
6233 #. type: SS
6234 #: build/C/man2/signalfd.2:226 build/C/man2/timerfd_create.2:280
6235 #, no-wrap
6236 msgid "execve(2) semantics"
6237 msgstr ""
6238
6239 #. type: Plain text
6240 #: build/C/man2/signalfd.2:238
6241 msgid ""
6242 "Just like any other file descriptor, a signalfd file descriptor remains open "
6243 "across an B<execve>(2), unless it has been marked for close-on-exec (see "
6244 "B<fcntl>(2)).  Any signals that were available for reading before the "
6245 "B<execve>(2)  remain available to the newly loaded program.  (This is "
6246 "analogous to traditional signal semantics, where a blocked signal that is "
6247 "pending remains pending across an B<execve>(2).)"
6248 msgstr ""
6249
6250 #. type: SS
6251 #: build/C/man2/signalfd.2:238
6252 #, no-wrap
6253 msgid "Thread semantics"
6254 msgstr ""
6255
6256 #. type: Plain text
6257 #: build/C/man2/signalfd.2:248
6258 msgid ""
6259 "The semantics of signalfd file descriptors in a multithreaded program mirror "
6260 "the standard semantics for signals.  In other words, when a thread reads "
6261 "from a signalfd file descriptor, it will read the signals that are directed "
6262 "to the thread itself and the signals that are directed to the process (i.e., "
6263 "the entire thread group).  (A thread will not be able to read signals that "
6264 "are directed to other threads in the process.)"
6265 msgstr ""
6266
6267 #. type: Plain text
6268 #: build/C/man2/signalfd.2:262
6269 msgid ""
6270 "On success, B<signalfd>()  returns a signalfd file descriptor; this is "
6271 "either a new file descriptor (if I<fd> was -1), or I<fd> if I<fd> was a "
6272 "valid signalfd file descriptor.  On error, -1 is returned and I<errno> is "
6273 "set to indicate the error."
6274 msgstr ""
6275
6276 #. type: TP
6277 #: build/C/man2/signalfd.2:263 build/C/man2/timerfd_create.2:337
6278 #, no-wrap
6279 msgid "B<EBADF>"
6280 msgstr ""
6281
6282 #. type: Plain text
6283 #: build/C/man2/signalfd.2:268
6284 msgid "The I<fd> file descriptor is not a valid file descriptor."
6285 msgstr ""
6286
6287 #.  or, the
6288 #.  .I sizemask
6289 #.  argument is not equal to
6290 #.  .IR sizeof(sigset_t) ;
6291 #. type: Plain text
6292 #: build/C/man2/signalfd.2:276
6293 msgid "I<fd> is not a valid signalfd file descriptor."
6294 msgstr ""
6295
6296 #. type: Plain text
6297 #: build/C/man2/signalfd.2:283 build/C/man2/timerfd_create.2:319
6298 msgid "I<flags> is invalid; or, in Linux 2.6.26 or earlier, I<flags> is nonzero."
6299 msgstr ""
6300
6301 #. type: Plain text
6302 #: build/C/man2/signalfd.2:286 build/C/man2/timerfd_create.2:322
6303 msgid "The per-process limit of open file descriptors has been reached."
6304 msgstr ""
6305
6306 #. type: Plain text
6307 #: build/C/man2/signalfd.2:296
6308 msgid "There was insufficient memory to create a new signalfd file descriptor."
6309 msgstr ""
6310
6311 #.  signalfd() is in glibc 2.7, but reportedly does not build
6312 #. type: Plain text
6313 #: build/C/man2/signalfd.2:304
6314 msgid ""
6315 "B<signalfd>()  is available on Linux since kernel 2.6.22.  Working support "
6316 "is provided in glibc since version 2.8.  The B<signalfd4>()  system call "
6317 "(see NOTES) is available on Linux since kernel 2.6.27."
6318 msgstr ""
6319
6320 #. type: Plain text
6321 #: build/C/man2/signalfd.2:309
6322 msgid "B<signalfd>()  and B<signalfd4>()  are Linux-specific."
6323 msgstr ""
6324
6325 #. type: Plain text
6326 #: build/C/man2/signalfd.2:319
6327 msgid ""
6328 "The underlying Linux system call requires an additional argument, I<size_t "
6329 "sizemask>, which specifies the size of the I<mask> argument.  The glibc "
6330 "B<signalfd>()  wrapper function does not include this argument, since it "
6331 "provides the required value for the underlying system call."
6332 msgstr ""
6333
6334 #. type: Plain text
6335 #: build/C/man2/signalfd.2:333
6336 msgid ""
6337 "A process can create multiple signalfd file descriptors.  This makes it "
6338 "possible to accept different signals on different file descriptors.  (This "
6339 "may be useful if monitoring the file descriptors using B<select>(2), "
6340 "B<poll>(2), or B<epoll>(7): the arrival of different signals will make "
6341 "different descriptors ready.)  If a signal appears in the I<mask> of more "
6342 "than one of the file descriptors, then occurrences of that signal can be "
6343 "read (once) from any one of the descriptors."
6344 msgstr ""
6345
6346 #. type: Plain text
6347 #: build/C/man2/signalfd.2:349
6348 msgid ""
6349 "There are two underlying Linux system calls: B<signalfd>()  and the more "
6350 "recent B<signalfd4>().  The former system call does not implement a I<flags> "
6351 "argument.  The latter system call implements the I<flags> values described "
6352 "above.  Starting with glibc 2.9, the B<signalfd>()  wrapper function will "
6353 "use B<signalfd4>()  where it is available."
6354 msgstr ""
6355
6356 #.  The fix also was put into 2.6.24.5
6357 #. type: Plain text
6358 #: build/C/man2/signalfd.2:357
6359 msgid ""
6360 "In kernels before 2.6.25, the I<ssi_ptr> and I<ssi_int> fields are not "
6361 "filled in with the data accompanying a signal sent by B<sigqueue>(3)."
6362 msgstr ""
6363
6364 #. type: Plain text
6365 #: build/C/man2/signalfd.2:367
6366 msgid ""
6367 "The program below accepts the signals B<SIGINT> and B<SIGQUIT> via a "
6368 "signalfd file descriptor.  The program terminates after accepting a "
6369 "B<SIGQUIT> signal.  The following shell session demonstrates the use of the "
6370 "program:"
6371 msgstr ""
6372
6373 #. type: Plain text
6374 #: build/C/man2/signalfd.2:378
6375 #, no-wrap
6376 msgid ""
6377 "$B< ./signalfd_demo>\n"
6378 "B<^C>                   # Control-C generates SIGINT\n"
6379 "Got SIGINT\n"
6380 "B<^C>\n"
6381 "Got SIGINT\n"
6382 "B<^\\e>                    # Control-\\e generates SIGQUIT\n"
6383 "Got SIGQUIT\n"
6384 "$\n"
6385 msgstr ""
6386
6387 #. type: Plain text
6388 #: build/C/man2/signalfd.2:388
6389 #, no-wrap
6390 msgid ""
6391 "#include E<lt>sys/signalfd.hE<gt>\n"
6392 "#include E<lt>signal.hE<gt>\n"
6393 "#include E<lt>unistd.hE<gt>\n"
6394 "#include E<lt>stdlib.hE<gt>\n"
6395 "#include E<lt>stdio.hE<gt>\n"
6396 msgstr ""
6397
6398 #. type: Plain text
6399 #: build/C/man2/signalfd.2:399
6400 #, no-wrap
6401 msgid ""
6402 "int\n"
6403 "main(int argc, char *argv[])\n"
6404 "{\n"
6405 "    sigset_t mask;\n"
6406 "    int sfd;\n"
6407 "    struct signalfd_siginfo fdsi;\n"
6408 "    ssize_t s;\n"
6409 msgstr ""
6410
6411 #. type: Plain text
6412 #: build/C/man2/signalfd.2:403
6413 #, no-wrap
6414 msgid ""
6415 "    sigemptyset(&mask);\n"
6416 "    sigaddset(&mask, SIGINT);\n"
6417 "    sigaddset(&mask, SIGQUIT);\n"
6418 msgstr ""
6419
6420 #. type: Plain text
6421 #: build/C/man2/signalfd.2:406
6422 #, no-wrap
6423 msgid ""
6424 "    /* Block signals so that they aren\\(aqt handled\n"
6425 "       according to their default dispositions */\n"
6426 msgstr ""
6427
6428 #. type: Plain text
6429 #: build/C/man2/signalfd.2:409
6430 #, no-wrap
6431 msgid ""
6432 "    if (sigprocmask(SIG_BLOCK, &mask, NULL) == -1)\n"
6433 "        handle_error(\"sigprocmask\");\n"
6434 msgstr ""
6435
6436 #. type: Plain text
6437 #: build/C/man2/signalfd.2:413
6438 #, no-wrap
6439 msgid ""
6440 "    sfd = signalfd(-1, &mask, 0);\n"
6441 "    if (sfd == -1)\n"
6442 "        handle_error(\"signalfd\");\n"
6443 msgstr ""
6444
6445 #. type: Plain text
6446 #: build/C/man2/signalfd.2:418
6447 #, no-wrap
6448 msgid ""
6449 "    for (;;) {\n"
6450 "        s = read(sfd, &fdsi, sizeof(struct signalfd_siginfo));\n"
6451 "        if (s != sizeof(struct signalfd_siginfo))\n"
6452 "            handle_error(\"read\");\n"
6453 msgstr ""
6454
6455 #. type: Plain text
6456 #: build/C/man2/signalfd.2:429
6457 #, no-wrap
6458 msgid ""
6459 "        if (fdsi.ssi_signo == SIGINT) {\n"
6460 "            printf(\"Got SIGINT\\en\");\n"
6461 "        } else if (fdsi.ssi_signo == SIGQUIT) {\n"
6462 "            printf(\"Got SIGQUIT\\en\");\n"
6463 "            exit(EXIT_SUCCESS);\n"
6464 "        } else {\n"
6465 "            printf(\"Read unexpected signal\\en\");\n"
6466 "        }\n"
6467 "    }\n"
6468 "}\n"
6469 msgstr ""
6470
6471 #. type: Plain text
6472 #: build/C/man2/signalfd.2:443
6473 msgid ""
6474 "B<eventfd>(2), B<poll>(2), B<read>(2), B<select>(2), B<sigaction>(2), "
6475 "B<sigprocmask>(2), B<sigwaitinfo>(2), B<timerfd_create>(2), B<sigsetops>(3), "
6476 "B<sigwait>(3), B<epoll>(7), B<signal>(7)"
6477 msgstr ""
6478
6479 #. type: TH
6480 #: build/C/man3/sigpause.3:23
6481 #, no-wrap
6482 msgid "SIGPAUSE"
6483 msgstr ""
6484
6485 #. type: TH
6486 #: build/C/man3/sigpause.3:23
6487 #, no-wrap
6488 msgid "2010-09-12"
6489 msgstr ""
6490
6491 #. type: Plain text
6492 #: build/C/man3/sigpause.3:26
6493 msgid "sigpause - atomically release blocked signals and wait for interrupt"
6494 msgstr ""
6495
6496 #. type: Plain text
6497 #: build/C/man3/sigpause.3:31
6498 #, no-wrap
6499 msgid "B<int sigpause(int >I<sigmask>B<);  /* BSD */>\n"
6500 msgstr ""
6501
6502 #. type: Plain text
6503 #: build/C/man3/sigpause.3:33
6504 #, no-wrap
6505 msgid "B<int sigpause(int >I<sig>B<);      /* System V / UNIX 95 */>\n"
6506 msgstr ""
6507
6508 #. type: Plain text
6509 #: build/C/man3/sigpause.3:39
6510 msgid "Don't use this function.  Use B<sigsuspend>(2)  instead."
6511 msgstr ""
6512
6513 #. type: Plain text
6514 #: build/C/man3/sigpause.3:46
6515 msgid ""
6516 "The function B<sigpause>()  is designed to wait for some signal.  It changes "
6517 "the process's signal mask (set of blocked signals), and then waits for a "
6518 "signal to arrive.  Upon arrival of a signal, the original signal mask is "
6519 "restored."
6520 msgstr ""
6521
6522 #. type: Plain text
6523 #: build/C/man3/sigpause.3:54
6524 msgid ""
6525 "If B<sigpause>()  returns, it was interrupted by a signal and the return "
6526 "value is -1 with I<errno> set to B<EINTR>."
6527 msgstr ""
6528
6529 #. type: Plain text
6530 #: build/C/man3/sigpause.3:58
6531 msgid "The System V version of B<sigpause>()  is standardized in POSIX.1-2001."
6532 msgstr ""
6533
6534 #.  __xpg_sigpause: UNIX 95, spec 1170, SVID, SVr4, XPG
6535 #. type: Plain text
6536 #: build/C/man3/sigpause.3:75
6537 msgid ""
6538 "The classical BSD version of this function appeared in 4.2BSD.  It sets the "
6539 "process's signal mask to I<sigmask>.  UNIX 95 standardized the incompatible "
6540 "System V version of this function, which removes only the specified signal "
6541 "I<sig> from the process's signal mask.  The unfortunate situation with two "
6542 "incompatible functions with the same name was solved by the "
6543 "B<\\%sigsuspend>(2)  function, that takes a I<sigset_t *> argument (instead "
6544 "of an I<int>)."
6545 msgstr ""
6546
6547 #. type: Plain text
6548 #: build/C/man3/sigpause.3:78
6549 msgid ""
6550 "On Linux, this routine is a system call only on the Sparc (sparc64)  "
6551 "architecture."
6552 msgstr ""
6553
6554 #. type: Plain text
6555 #: build/C/man3/sigpause.3:80
6556 msgid "Libc4 and libc5 only know about the BSD version."
6557 msgstr ""
6558
6559 #
6560 #.  For the BSD version, one usually uses a zero
6561 #.  .I sigmask
6562 #.  to indicate that no signals are to be blocked.
6563 #. type: Plain text
6564 #: build/C/man3/sigpause.3:96
6565 msgid ""
6566 "Glibc uses the BSD version if the B<_BSD_SOURCE> feature test macro is "
6567 "defined and none of B<_POSIX_SOURCE>, B<_POSIX_C_SOURCE>, B<_XOPEN_SOURCE>, "
6568 "B<_GNU_SOURCE>, or B<_SVID_SOURCE> is defined.  Otherwise, the System V "
6569 "version is used."
6570 msgstr ""
6571
6572 #. type: Plain text
6573 #: build/C/man3/sigpause.3:104
6574 msgid ""
6575 "B<kill>(2), B<sigaction>(2), B<sigprocmask>(2), B<sigsuspend>(2), "
6576 "B<sigblock>(3), B<sigvec>(3), B<feature_test_macros>(7)"
6577 msgstr ""
6578
6579 #. type: TH
6580 #: build/C/man2/sigpending.2:27
6581 #, no-wrap
6582 msgid "SIGPENDING"
6583 msgstr ""
6584
6585 #. type: TH
6586 #: build/C/man2/sigpending.2:27
6587 #, no-wrap
6588 msgid "2008-10-04"
6589 msgstr ""
6590
6591 #. type: Plain text
6592 #: build/C/man2/sigpending.2:30
6593 msgid "sigpending - examine pending signals"
6594 msgstr ""
6595
6596 #. type: Plain text
6597 #: build/C/man2/sigpending.2:34
6598 msgid "B<int sigpending(sigset_t *>I<set>B<);>"
6599 msgstr ""
6600
6601 #. type: Plain text
6602 #: build/C/man2/sigpending.2:43
6603 msgid ""
6604 "B<sigpending>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
6605 "_POSIX_SOURCE"
6606 msgstr ""
6607
6608 #. type: Plain text
6609 #: build/C/man2/sigpending.2:51
6610 msgid ""
6611 "B<sigpending>()  returns the set of signals that are pending for delivery to "
6612 "the calling thread (i.e., the signals which have been raised while "
6613 "blocked).  The mask of pending signals is returned in I<set>."
6614 msgstr ""
6615
6616 #. type: Plain text
6617 #: build/C/man2/sigpending.2:54
6618 msgid "B<sigpending>()  returns 0 on success and -1 on error."
6619 msgstr ""
6620
6621 #. type: Plain text
6622 #: build/C/man2/sigpending.2:59
6623 msgid ""
6624 "I<set> points to memory which is not a valid part of the process address "
6625 "space."
6626 msgstr ""
6627
6628 #. type: Plain text
6629 #: build/C/man2/sigpending.2:70
6630 msgid ""
6631 "The set of signals that is pending for a thread is the union of the set of "
6632 "signals that is pending for that thread and the set of signals that is "
6633 "pending for the process as a whole; see B<signal>(7)."
6634 msgstr ""
6635
6636 #. type: Plain text
6637 #: build/C/man2/sigpending.2:82
6638 msgid ""
6639 "In versions of glibc up to and including 2.2.1, there is a bug in the "
6640 "wrapper function for B<sigpending>()  which means that information about "
6641 "pending real-time signals is not correctly returned."
6642 msgstr ""
6643
6644 #. type: Plain text
6645 #: build/C/man2/sigpending.2:90
6646 msgid ""
6647 "B<kill>(2), B<sigaction>(2), B<signal>(2), B<sigprocmask>(2), "
6648 "B<sigsuspend>(2), B<sigsetops>(3), B<signal>(7)"
6649 msgstr ""
6650
6651 #. type: TH
6652 #: build/C/man2/sigprocmask.2:27
6653 #, no-wrap
6654 msgid "SIGPROCMASK"
6655 msgstr ""
6656
6657 #. type: TH
6658 #: build/C/man2/sigprocmask.2:27
6659 #, no-wrap
6660 msgid "2012-04-15"
6661 msgstr ""
6662
6663 #. type: Plain text
6664 #: build/C/man2/sigprocmask.2:30
6665 msgid "sigprocmask - examine and change blocked signals"
6666 msgstr ""
6667
6668 #. type: Plain text
6669 #: build/C/man2/sigprocmask.2:35
6670 msgid ""
6671 "B<int sigprocmask(int >I<how>B<, const sigset_t *>I<set>B<,> B<sigset_t "
6672 "*>I<oldset>B<);>"
6673 msgstr ""
6674
6675 #. type: Plain text
6676 #: build/C/man2/sigprocmask.2:44
6677 msgid ""
6678 "B<sigprocmask>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
6679 "_POSIX_SOURCE"
6680 msgstr ""
6681
6682 #. type: Plain text
6683 #: build/C/man2/sigprocmask.2:53
6684 msgid ""
6685 "B<sigprocmask>()  is used to fetch and/or change the signal mask of the "
6686 "calling thread.  The signal mask is the set of signals whose delivery is "
6687 "currently blocked for the caller (see also B<signal>(7)  for more details)."
6688 msgstr ""
6689
6690 #. type: Plain text
6691 #: build/C/man2/sigprocmask.2:57
6692 msgid "The behavior of the call is dependent on the value of I<how>, as follows."
6693 msgstr ""
6694
6695 #. type: TP
6696 #: build/C/man2/sigprocmask.2:57
6697 #, no-wrap
6698 msgid "B<SIG_BLOCK>"
6699 msgstr ""
6700
6701 #. type: Plain text
6702 #: build/C/man2/sigprocmask.2:62
6703 msgid ""
6704 "The set of blocked signals is the union of the current set and the I<set> "
6705 "argument."
6706 msgstr ""
6707
6708 #. type: TP
6709 #: build/C/man2/sigprocmask.2:62
6710 #, no-wrap
6711 msgid "B<SIG_UNBLOCK>"
6712 msgstr ""
6713
6714 #. type: Plain text
6715 #: build/C/man2/sigprocmask.2:68
6716 msgid ""
6717 "The signals in I<set> are removed from the current set of blocked signals.  "
6718 "It is permissible to attempt to unblock a signal which is not blocked."
6719 msgstr ""
6720
6721 #. type: TP
6722 #: build/C/man2/sigprocmask.2:68
6723 #, no-wrap
6724 msgid "B<SIG_SETMASK>"
6725 msgstr ""
6726
6727 #. type: Plain text
6728 #: build/C/man2/sigprocmask.2:72
6729 msgid "The set of blocked signals is set to the argument I<set>."
6730 msgstr ""
6731
6732 #. type: Plain text
6733 #: build/C/man2/sigprocmask.2:77
6734 msgid ""
6735 "If I<oldset> is non-NULL, the previous value of the signal mask is stored in "
6736 "I<oldset>."
6737 msgstr ""
6738
6739 #. type: Plain text
6740 #: build/C/man2/sigprocmask.2:86
6741 msgid ""
6742 "If I<set> is NULL, then the signal mask is unchanged (i.e., I<how> is "
6743 "ignored), but the current value of the signal mask is nevertheless returned "
6744 "in I<oldset> (if it is not NULL)."
6745 msgstr ""
6746
6747 #. type: Plain text
6748 #: build/C/man2/sigprocmask.2:91
6749 msgid ""
6750 "The use of B<sigprocmask>()  is unspecified in a multithreaded process; see "
6751 "B<pthread_sigmask>(3)."
6752 msgstr ""
6753
6754 #. type: Plain text
6755 #: build/C/man2/sigprocmask.2:94
6756 msgid "B<sigprocmask>()  returns 0 on success and -1 on error."
6757 msgstr ""
6758
6759 #. type: Plain text
6760 #: build/C/man2/sigprocmask.2:102
6761 msgid ""
6762 "the I<set> or I<oldset> argument points outside the process's allocated "
6763 "address space."
6764 msgstr ""
6765
6766 #. type: Plain text
6767 #: build/C/man2/sigprocmask.2:107
6768 msgid "The value specified in I<how> was invalid."
6769 msgstr ""
6770
6771 #. type: Plain text
6772 #: build/C/man2/sigprocmask.2:113
6773 msgid ""
6774 "It is not possible to block B<SIGKILL> or B<SIGSTOP>.  Attempts to do so are "
6775 "silently ignored."
6776 msgstr ""
6777
6778 #. type: Plain text
6779 #: build/C/man2/sigprocmask.2:115
6780 msgid "Each of the threads in a process has its own signal mask."
6781 msgstr ""
6782
6783 #. type: Plain text
6784 #: build/C/man2/sigprocmask.2:135
6785 msgid ""
6786 "If B<SIGBUS>, B<SIGFPE>, B<SIGILL>, or B<SIGSEGV> are generated while they "
6787 "are blocked, the result is undefined, unless the signal was generated by "
6788 "B<kill>(2), B<sigqueue>(3), or B<raise>(3)."
6789 msgstr ""
6790
6791 #. type: Plain text
6792 #: build/C/man2/sigprocmask.2:150
6793 msgid ""
6794 "B<kill>(2), B<pause>(2), B<sigaction>(2), B<signal>(2), B<sigpending>(2), "
6795 "B<sigsuspend>(2), B<pthread_sigmask>(3), B<sigqueue>(3), B<sigsetops>(3), "
6796 "B<signal>(7)"
6797 msgstr ""
6798
6799 #. type: TH
6800 #: build/C/man3/sigqueue.3:26
6801 #, no-wrap
6802 msgid "SIGQUEUE"
6803 msgstr ""
6804
6805 #. type: TH
6806 #: build/C/man3/sigqueue.3:26
6807 #, no-wrap
6808 msgid "2012-03-25"
6809 msgstr ""
6810
6811 #. type: Plain text
6812 #: build/C/man3/sigqueue.3:29
6813 msgid "sigqueue - queue a signal and data to a process"
6814 msgstr ""
6815
6816 #. type: Plain text
6817 #: build/C/man3/sigqueue.3:33
6818 msgid ""
6819 "B<int sigqueue(pid_t >I<pid>B<, int >I<sig>B<, const union sigval "
6820 ">I<value>B<);>"
6821 msgstr ""
6822
6823 #. type: Plain text
6824 #: build/C/man3/sigqueue.3:41
6825 msgid "B<sigqueue>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
6826 msgstr ""
6827
6828 #. type: Plain text
6829 #: build/C/man3/sigqueue.3:53
6830 msgid ""
6831 "B<sigqueue>()  sends the signal specified in I<sig> to the process whose PID "
6832 "is given in I<pid>.  The permissions required to send a signal are the same "
6833 "as for B<kill>(2).  As with B<kill>(2), the null signal (0) can be used to "
6834 "check if a process with a given PID exists."
6835 msgstr ""
6836
6837 #. type: Plain text
6838 #: build/C/man3/sigqueue.3:58
6839 msgid ""
6840 "The I<value> argument is used to specify an accompanying item of data "
6841 "(either an integer or a pointer value) to be sent with the signal, and has "
6842 "the following type:"
6843 msgstr ""
6844
6845 #. type: Plain text
6846 #: build/C/man3/sigqueue.3:65
6847 #, no-wrap
6848 msgid ""
6849 "union sigval {\n"
6850 "    int   sival_int;\n"
6851 "    void *sival_ptr;\n"
6852 "};\n"
6853 msgstr ""
6854
6855 #. type: Plain text
6856 #: build/C/man3/sigqueue.3:81
6857 msgid ""
6858 "If the receiving process has installed a handler for this signal using the "
6859 "B<SA_SIGINFO> flag to B<sigaction>(2), then it can obtain this data via the "
6860 "I<si_value> field of the I<siginfo_t> structure passed as the second "
6861 "argument to the handler.  Furthermore, the I<si_code> field of that "
6862 "structure will be set to B<SI_QUEUE>."
6863 msgstr ""
6864
6865 #. type: Plain text
6866 #: build/C/man3/sigqueue.3:89
6867 msgid ""
6868 "On success, B<sigqueue>()  returns 0, indicating that the signal was "
6869 "successfully queued to the receiving process.  Otherwise -1 is returned and "
6870 "I<errno> is set to indicate the error."
6871 msgstr ""
6872
6873 #. type: Plain text
6874 #: build/C/man3/sigqueue.3:100
6875 msgid "I<sig> was invalid."
6876 msgstr ""
6877
6878 #. type: Plain text
6879 #: build/C/man3/sigqueue.3:106
6880 msgid ""
6881 "The process does not have permission to send the signal to the receiving "
6882 "process.  For the required permissions, see B<kill>(2)."
6883 msgstr ""
6884
6885 #. type: Plain text
6886 #: build/C/man3/sigqueue.3:110
6887 msgid "No process has a PID matching I<pid>."
6888 msgstr ""
6889
6890 #. type: Plain text
6891 #: build/C/man3/sigqueue.3:112
6892 msgid "This system call first appeared in Linux 2.2."
6893 msgstr ""
6894
6895 #. type: Plain text
6896 #: build/C/man3/sigqueue.3:122
6897 msgid ""
6898 "If this function results in the sending of a signal to the process that "
6899 "invoked it, and that signal was not blocked by the calling thread, and no "
6900 "other threads were willing to handle this signal (either by having it "
6901 "unblocked, or by waiting for it using B<sigwait>(3)), then at least some "
6902 "signal must be delivered to this thread before this function returns."
6903 msgstr ""
6904
6905 #. type: Plain text
6906 #: build/C/man3/sigqueue.3:137
6907 msgid ""
6908 "On Linux, this function is implemented using the B<rt_sigqueueinfo>(2)  "
6909 "system call.  The system call differs in its third argument, which is the "
6910 "I<siginfo_t> structure that will be supplied to the receiving process's "
6911 "signal handler or returned by the receiving process's B<sigtimedwait>(2)  "
6912 "call.  Inside the glibc B<sigqueue>()  wrapper, this argument, I<uinfo>, is "
6913 "initialized as follows:"
6914 msgstr ""
6915
6916 #. type: Plain text
6917 #: build/C/man3/sigqueue.3:145
6918 #, no-wrap
6919 msgid ""
6920 "uinfo.si_signo = sig;      /* argument supplied to sigqueue() */\n"
6921 "uinfo.si_code = SI_QUEUE;\n"
6922 "uinfo.si_pid = getpid();   /* Process ID of sender */\n"
6923 "uinfo.si_uid = getuid();   /* Real UID of sender */\n"
6924 "uinfo.si_value = val;      /* argument supplied to sigqueue() */\n"
6925 msgstr ""
6926
6927 #. type: Plain text
6928 #: build/C/man3/sigqueue.3:155
6929 msgid ""
6930 "B<kill>(2), B<rt_sigqueueinfo>(2), B<sigaction>(2), B<signal>(2), "
6931 "B<pthread_sigqueue>(3), B<sigwait>(3), B<signal>(7)"
6932 msgstr ""
6933
6934 #. type: TH
6935 #: build/C/man2/sigreturn.2:27
6936 #, no-wrap
6937 msgid "SIGRETURN"
6938 msgstr ""
6939
6940 #. type: TH
6941 #: build/C/man2/sigreturn.2:27
6942 #, no-wrap
6943 msgid "2008-06-26"
6944 msgstr ""
6945
6946 #. type: Plain text
6947 #: build/C/man2/sigreturn.2:30
6948 msgid "sigreturn - return from signal handler and cleanup stack frame"
6949 msgstr ""
6950
6951 #. type: Plain text
6952 #: build/C/man2/sigreturn.2:32
6953 msgid "B<int sigreturn(unsigned long >I<__unused>B<);>"
6954 msgstr ""
6955
6956 #. type: Plain text
6957 #: build/C/man2/sigreturn.2:40
6958 msgid ""
6959 "When the Linux kernel creates the stack frame for a signal handler, a call "
6960 "to B<sigreturn>()  is inserted into the stack frame so that upon return from "
6961 "the signal handler, B<sigreturn>()  will be called."
6962 msgstr ""
6963
6964 #. type: Plain text
6965 #: build/C/man2/sigreturn.2:51
6966 msgid ""
6967 "This B<sigreturn>()  call undoes everything that was done\\(emchanging the "
6968 "process's signal mask, switching stacks (see B<sigaltstack>(2))\\(emin order "
6969 "to invoke the signal handler: it restores the process's signal mask, "
6970 "switches stacks, and restores the process's context (registers, processor "
6971 "flags), so that the process directly resumes execution at the point where it "
6972 "was interrupted by the signal."
6973 msgstr ""
6974
6975 #. type: Plain text
6976 #: build/C/man2/sigreturn.2:54
6977 msgid "B<sigreturn>()  never returns."
6978 msgstr ""
6979
6980 #. type: SH
6981 #: build/C/man2/sigreturn.2:54
6982 #, no-wrap
6983 msgid "FILES"
6984 msgstr ""
6985
6986 #. type: Plain text
6987 #: build/C/man2/sigreturn.2:56
6988 msgid "/usr/src/linux/arch/i386/kernel/signal.c"
6989 msgstr ""
6990
6991 #. type: Plain text
6992 #: build/C/man2/sigreturn.2:58
6993 msgid "/usr/src/linux/arch/alpha/kernel/entry.S"
6994 msgstr ""
6995
6996 #. type: Plain text
6997 #: build/C/man2/sigreturn.2:62
6998 msgid ""
6999 "B<sigreturn>()  is specific to Linux and should not be used in programs "
7000 "intended to be portable."
7001 msgstr ""
7002
7003 #. type: Plain text
7004 #: build/C/man2/sigreturn.2:72
7005 msgid ""
7006 "The B<sigreturn>()  call is used by the kernel to implement signal "
7007 "handlers.  It should B<never> be called directly.  Better yet, the specific "
7008 "use of the I<__unused> argument varies depending on the architecture."
7009 msgstr ""
7010
7011 #. type: Plain text
7012 #: build/C/man2/sigreturn.2:77
7013 msgid "B<kill>(2), B<sigaltstack>(2), B<signal>(2), B<signal>(7)"
7014 msgstr ""
7015
7016 #. type: TH
7017 #: build/C/man3/sigset.3:24
7018 #, no-wrap
7019 msgid "SIGSET"
7020 msgstr ""
7021
7022 #. type: Plain text
7023 #: build/C/man3/sigset.3:27
7024 msgid "sigset, sighold, sigrelse, sigignore - System V signal API"
7025 msgstr ""
7026
7027 #. type: Plain text
7028 #: build/C/man3/sigset.3:33
7029 msgid "B<sighandler_t sigset(int >I<sig>B<, sighandler_t >I<disp>B<);>"
7030 msgstr ""
7031
7032 #. type: Plain text
7033 #: build/C/man3/sigset.3:35
7034 msgid "B<int sighold(int >I<sig>B<);>"
7035 msgstr ""
7036
7037 #. type: Plain text
7038 #: build/C/man3/sigset.3:37
7039 msgid "B<int sigrelse(int >I<sig>B<);>"
7040 msgstr ""
7041
7042 #. type: Plain text
7043 #: build/C/man3/sigset.3:39
7044 msgid "B<int sigignore(int >I<sig>B<);>"
7045 msgstr ""
7046
7047 #. type: Plain text
7048 #: build/C/man3/sigset.3:50
7049 msgid "B<sigset>(), B<sighold>(), B<sigrelse>(), B<sigignore>():"
7050 msgstr ""
7051
7052 #. type: Plain text
7053 #: build/C/man3/sigset.3:54
7054 msgid "_XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
7055 msgstr ""
7056
7057 #. type: Plain text
7058 #: build/C/man3/sigset.3:63
7059 msgid ""
7060 "These functions are provided in glibc as a compatibility interface for "
7061 "programs that make use of the historical System V signal API.  This API is "
7062 "obsolete: new applications should use the POSIX signal API (B<sigaction>(2), "
7063 "B<sigprocmask>(2), etc.)"
7064 msgstr ""
7065
7066 #. type: Plain text
7067 #: build/C/man3/sigset.3:72
7068 msgid ""
7069 "The B<sigset>()  function modifies the disposition of the signal I<sig>.  "
7070 "The I<disp> argument can be the address of a signal handler function, or one "
7071 "of the following constants:"
7072 msgstr ""
7073
7074 #. type: TP
7075 #: build/C/man3/sigset.3:72
7076 #, no-wrap
7077 msgid "B<SIG_DFL>"
7078 msgstr ""
7079
7080 #. type: Plain text
7081 #: build/C/man3/sigset.3:77
7082 msgid "Reset the disposition of I<sig> to the default."
7083 msgstr ""
7084
7085 #. type: TP
7086 #: build/C/man3/sigset.3:77
7087 #, no-wrap
7088 msgid "B<SIG_IGN>"
7089 msgstr ""
7090
7091 #. type: Plain text
7092 #: build/C/man3/sigset.3:81
7093 msgid "Ignore I<sig>."
7094 msgstr ""
7095
7096 #. type: TP
7097 #: build/C/man3/sigset.3:81
7098 #, no-wrap
7099 msgid "B<SIG_HOLD>"
7100 msgstr ""
7101
7102 #. type: Plain text
7103 #: build/C/man3/sigset.3:88
7104 msgid ""
7105 "Add I<sig> to the process's signal mask, but leave the disposition of I<sig> "
7106 "unchanged."
7107 msgstr ""
7108
7109 #. type: Plain text
7110 #: build/C/man3/sigset.3:94
7111 msgid ""
7112 "If I<disp> specifies the address of a signal handler, then I<sig> is added "
7113 "to the process's signal mask during execution of the handler."
7114 msgstr ""
7115
7116 #. type: Plain text
7117 #: build/C/man3/sigset.3:102
7118 msgid ""
7119 "If I<disp> was specified as a value other than B<SIG_HOLD>, then I<sig> is "
7120 "removed from the process's signal mask."
7121 msgstr ""
7122
7123 #. type: Plain text
7124 #: build/C/man3/sigset.3:108 build/C/man3/sigvec.3:85
7125 msgid "The dispositions for B<SIGKILL> and B<SIGSTOP> cannot be changed."
7126 msgstr ""
7127
7128 #. type: Plain text
7129 #: build/C/man3/sigset.3:114
7130 msgid "The B<sighold>()  function adds I<sig> to the calling process's signal mask."
7131 msgstr ""
7132
7133 #. type: Plain text
7134 #: build/C/man3/sigset.3:120
7135 msgid ""
7136 "The B<sigrelse>()  function removes I<sig> from the calling process's signal "
7137 "mask."
7138 msgstr ""
7139
7140 #. type: Plain text
7141 #: build/C/man3/sigset.3:127
7142 msgid "The B<sigignore>()  function sets the disposition of I<sig> to B<SIG_IGN>."
7143 msgstr ""
7144
7145 #. type: Plain text
7146 #: build/C/man3/sigset.3:143
7147 msgid ""
7148 "On success, B<sigset>()  returns B<SIG_HOLD> if I<sig> was blocked before "
7149 "the call, or the signal's previous disposition if it was not blocked before "
7150 "the call.  On error, B<sigset>()  returns -1, with I<errno> set to indicate "
7151 "the error.  (But see BUGS below.)"
7152 msgstr ""
7153
7154 #. type: Plain text
7155 #: build/C/man3/sigset.3:152
7156 msgid ""
7157 "The B<sighold>(), B<sigrelse>(), and B<sigignore>()  functions return 0 on "
7158 "success; on error, these functions return -1 and set I<errno> to indicate "
7159 "the error."
7160 msgstr ""
7161
7162 #. type: Plain text
7163 #: build/C/man3/sigset.3:159
7164 msgid ""
7165 "For B<sigset>()  see the ERRORS under B<sigaction>(2)  and "
7166 "B<sigprocmask>(2)."
7167 msgstr ""
7168
7169 #. type: Plain text
7170 #: build/C/man3/sigset.3:166
7171 msgid "For B<sighold>()  and B<sigrelse>()  see the ERRORS under B<sigprocmask>(2)."
7172 msgstr ""
7173
7174 #. type: Plain text
7175 #: build/C/man3/sigset.3:171
7176 msgid "For B<sigignore>(), see the errors under B<sigaction>(2)."
7177 msgstr ""
7178
7179 #. type: Plain text
7180 #: build/C/man3/sigset.3:188
7181 msgid ""
7182 "SVr4, POSIX.1-2001.  These functions are obsolete: do not use them in new "
7183 "programs.  POSIX.1-2008 marks B<sighold>(), B<sigignore>(), B<sigpause>(), "
7184 "B<sigrelse>(), and B<sigset>()  as obsolete, recommending the use of "
7185 "B<sigaction>(2), B<sigprocmask>(2), B<pthread_sigmask>(3), and "
7186 "B<sigsuspend>(2)  instead."
7187 msgstr ""
7188
7189 #. type: Plain text
7190 #: build/C/man3/sigset.3:190
7191 msgid "These functions appeared in glibc version 2.1."
7192 msgstr ""
7193
7194 #. type: Plain text
7195 #: build/C/man3/sigset.3:196
7196 msgid ""
7197 "The I<sighandler_t> type is a GNU extension; it is only used on this page to "
7198 "make the B<sigset>()  prototype more easily readable."
7199 msgstr ""
7200
7201 #. type: Plain text
7202 #: build/C/man3/sigset.3:204
7203 msgid ""
7204 "The B<sigset>()  function provides reliable signal handling semantics (as "
7205 "when calling B<sigaction>(2)  with I<sa_mask> equal to 0)."
7206 msgstr ""
7207
7208 #. type: Plain text
7209 #: build/C/man3/sigset.3:222
7210 msgid ""
7211 "On System V, the B<signal>()  function provides unreliable semantics (as "
7212 "when calling B<sigaction>(2)  with I<sa_mask> equal to I<SA_RESETHAND | "
7213 "SA_NODEFER>).  On BSD, B<signal>()  provides reliable semantics.  "
7214 "POSIX.1-2001 leaves these aspects of B<signal>()  unspecified.  See "
7215 "B<signal>(2)  for further details."
7216 msgstr ""
7217
7218 #. type: Plain text
7219 #: build/C/man3/sigset.3:230 build/C/man3/sigvec.3:250
7220 msgid ""
7221 "In order to wait for a signal, BSD and System V both provided a function "
7222 "named B<sigpause>(3), but this function has a different argument on the two "
7223 "systems.  See B<sigpause>(3)  for details."
7224 msgstr ""
7225
7226 #. type: Plain text
7227 #: build/C/man3/sigset.3:239
7228 msgid ""
7229 "In versions of glibc before 2.2, B<sigset>()  did not unblock I<sig> if "
7230 "I<disp> was specified as a value other than B<SIG_HOLD>."
7231 msgstr ""
7232
7233 #.  See http://sourceware.org/bugzilla/show_bug.cgi?id=1951
7234 #. type: Plain text
7235 #: build/C/man3/sigset.3:264
7236 msgid ""
7237 "In versions of glibc before 2.5, B<sigset>()  does not correctly return the "
7238 "previous disposition of the signal in two cases.  First, if I<disp> is "
7239 "specified as B<SIG_HOLD>, then a successful B<sigset>()  always returns "
7240 "B<SIG_HOLD>.  Instead, it should return the previous disposition of the "
7241 "signal (unless the signal was blocked, in which case B<SIG_HOLD> should be "
7242 "returned).  Second, if the signal is currently blocked, then the return "
7243 "value of a successful B<sigset>()  should be B<SIG_HOLD>.  Instead, the "
7244 "previous disposition of the signal is returned.  These problems have been "
7245 "fixed since glibc 2.5."
7246 msgstr ""
7247
7248 #. type: Plain text
7249 #: build/C/man3/sigset.3:274
7250 msgid ""
7251 "B<kill>(2), B<pause>(2), B<sigaction>(2), B<signal>(2), B<sigprocmask>(2), "
7252 "B<raise>(3), B<sigpause>(3), B<sigvec>(3), B<signal>(7)"
7253 msgstr ""
7254
7255 #. type: TH
7256 #: build/C/man3/sigsetops.3:29
7257 #, no-wrap
7258 msgid "SIGSETOPS"
7259 msgstr ""
7260
7261 #. type: TH
7262 #: build/C/man3/sigsetops.3:29
7263 #, no-wrap
7264 msgid "2008-09-01"
7265 msgstr ""
7266
7267 #. type: Plain text
7268 #: build/C/man3/sigsetops.3:33
7269 msgid ""
7270 "sigemptyset, sigfillset, sigaddset, sigdelset, sigismember - POSIX signal "
7271 "set operations."
7272 msgstr ""
7273
7274 #. type: Plain text
7275 #: build/C/man3/sigsetops.3:37
7276 msgid "B<int sigemptyset(sigset_t *>I<set>B<);>"
7277 msgstr ""
7278
7279 #. type: Plain text
7280 #: build/C/man3/sigsetops.3:39
7281 msgid "B<int sigfillset(sigset_t *>I<set>B<);>"
7282 msgstr ""
7283
7284 #. type: Plain text
7285 #: build/C/man3/sigsetops.3:41
7286 msgid "B<int sigaddset(sigset_t *>I<set>B<, int >I<signum>B<);>"
7287 msgstr ""
7288
7289 #. type: Plain text
7290 #: build/C/man3/sigsetops.3:43
7291 msgid "B<int sigdelset(sigset_t *>I<set>B<, int >I<signum>B<);>"
7292 msgstr ""
7293
7294 #. type: Plain text
7295 #: build/C/man3/sigsetops.3:45
7296 msgid "B<int sigismember(const sigset_t *>I<set>B<, int >I<signum>B<);>"
7297 msgstr ""
7298
7299 #. type: Plain text
7300 #: build/C/man3/sigsetops.3:57
7301 msgid ""
7302 "B<sigemptyset>(), B<sigfillset>(), B<sigaddset>(), B<sigdelset>(), "
7303 "B<sigismember>():"
7304 msgstr ""
7305
7306 #. type: Plain text
7307 #: build/C/man3/sigsetops.3:59
7308 msgid "_POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
7309 msgstr ""
7310
7311 #. type: Plain text
7312 #: build/C/man3/sigsetops.3:63
7313 msgid "These functions allow the manipulation of POSIX signal sets."
7314 msgstr ""
7315
7316 #. type: Plain text
7317 #: build/C/man3/sigsetops.3:68
7318 msgid ""
7319 "B<sigemptyset>()  initializes the signal set given by I<set> to empty, with "
7320 "all signals excluded from the set."
7321 msgstr ""
7322
7323 #. type: Plain text
7324 #: build/C/man3/sigsetops.3:73
7325 msgid "B<sigfillset>()  initializes I<set> to full, including all signals."
7326 msgstr ""
7327
7328 #. type: Plain text
7329 #: build/C/man3/sigsetops.3:81
7330 msgid ""
7331 "B<sigaddset>()  and B<sigdelset>()  add and delete respectively signal "
7332 "I<signum> from I<set>."
7333 msgstr ""
7334
7335 #. type: Plain text
7336 #: build/C/man3/sigsetops.3:87
7337 msgid "B<sigismember>()  tests whether I<signum> is a member of I<set>."
7338 msgstr ""
7339
7340 #. type: Plain text
7341 #: build/C/man3/sigsetops.3:105
7342 msgid ""
7343 "Objects of type I<sigset_t> must be initialized by a call to either "
7344 "B<sigemptyset>()  or B<sigfillset>()  before being passed to the functions "
7345 "B<sigaddset>(), B<sigdelset>()  and B<sigismember>()  or the additional "
7346 "glibc functions described below (B<sigisemptyset>(), B<sigandset>(), and "
7347 "B<sigorset>()).  The results are undefined if this is not done."
7348 msgstr ""
7349
7350 #. type: Plain text
7351 #: build/C/man3/sigsetops.3:112
7352 msgid ""
7353 "B<sigemptyset>(), B<sigfillset>(), B<sigaddset>(), and B<sigdelset>()  "
7354 "return 0 on success and -1 on error."
7355 msgstr ""
7356
7357 #. type: Plain text
7358 #: build/C/man3/sigsetops.3:121
7359 msgid ""
7360 "B<sigismember>()  returns 1 if I<signum> is a member of I<set>, 0 if "
7361 "I<signum> is not a member, and -1 on error."
7362 msgstr ""
7363
7364 #. type: Plain text
7365 #: build/C/man3/sigsetops.3:126
7366 msgid "I<sig> is not a valid signal."
7367 msgstr ""
7368
7369 #. type: SS
7370 #: build/C/man3/sigsetops.3:129
7371 #, no-wrap
7372 msgid "Glibc Notes"
7373 msgstr ""
7374
7375 #. type: Plain text
7376 #: build/C/man3/sigsetops.3:135
7377 msgid ""
7378 "If the B<_GNU_SOURCE> feature test macro is defined, then "
7379 "I<E<lt>signal.hE<gt>> exposes three other functions for manipulating signal "
7380 "sets."
7381 msgstr ""
7382
7383 #. type: TP
7384 #: build/C/man3/sigsetops.3:135
7385 #, no-wrap
7386 msgid "B<int sigisemptyset(sigset_t *>I<set>B<);>"
7387 msgstr ""
7388
7389 #. type: Plain text
7390 #: build/C/man3/sigsetops.3:140
7391 msgid "returns 1 if I<set> contains no signals, and 0 otherwise."
7392 msgstr ""
7393
7394 #. type: TP
7395 #: build/C/man3/sigsetops.3:140
7396 #, no-wrap
7397 msgid ""
7398 "B<int sigorset(sigset_t *>I<dest>B<, sigset_t *>I<left>B<, sigset_t "
7399 "*>I<right>B<);>"
7400 msgstr ""
7401
7402 #. type: Plain text
7403 #: build/C/man3/sigsetops.3:149
7404 msgid "places the union of the sets I<left> and I<right> in I<dest>."
7405 msgstr ""
7406
7407 #. type: TP
7408 #: build/C/man3/sigsetops.3:149
7409 #, no-wrap
7410 msgid ""
7411 "B<int sigandset(sigset_t *>I<dest>B<, sigset_t *>I<left>B<, sigset_t "
7412 "*>I<right>B<);>"
7413 msgstr ""
7414
7415 #. type: Plain text
7416 #: build/C/man3/sigsetops.3:158
7417 msgid "places the intersection of the sets I<left> and I<right> in I<dest>."
7418 msgstr ""
7419
7420 #. type: Plain text
7421 #: build/C/man3/sigsetops.3:163
7422 msgid "B<sigorset>()  and B<sigandset>()  return 0 on success, and -1 on failure."
7423 msgstr ""
7424
7425 #. type: Plain text
7426 #: build/C/man3/sigsetops.3:166
7427 msgid ""
7428 "These functions are nonstandard (a few other systems provide similar "
7429 "functions) and their use should be avoided in portable applications."
7430 msgstr ""
7431
7432 #. type: Plain text
7433 #: build/C/man3/sigsetops.3:171
7434 msgid "B<sigaction>(2), B<sigpending>(2), B<sigprocmask>(2), B<sigsuspend>(2)"
7435 msgstr ""
7436
7437 #. type: TH
7438 #: build/C/man2/sigsuspend.2:27
7439 #, no-wrap
7440 msgid "SIGSUSPEND"
7441 msgstr ""
7442
7443 #. type: TH
7444 #: build/C/man2/sigsuspend.2:27
7445 #, no-wrap
7446 msgid "2008-08-29"
7447 msgstr ""
7448
7449 #. type: Plain text
7450 #: build/C/man2/sigsuspend.2:30
7451 msgid "sigsuspend - wait for a signal"
7452 msgstr ""
7453
7454 #. type: Plain text
7455 #: build/C/man2/sigsuspend.2:34
7456 msgid "B<int sigsuspend(const sigset_t *>I<mask>B<);>"
7457 msgstr ""
7458
7459 #. type: Plain text
7460 #: build/C/man2/sigsuspend.2:43
7461 msgid ""
7462 "B<sigsuspend>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
7463 "_POSIX_SOURCE"
7464 msgstr ""
7465
7466 #. type: Plain text
7467 #: build/C/man2/sigsuspend.2:51
7468 msgid ""
7469 "B<sigsuspend>()  temporarily replaces the signal mask of the calling process "
7470 "with the mask given by I<mask> and then suspends the process until delivery "
7471 "of a signal whose action is to invoke a signal handler or to terminate a "
7472 "process."
7473 msgstr ""
7474
7475 #. type: Plain text
7476 #: build/C/man2/sigsuspend.2:60
7477 msgid ""
7478 "If the signal terminates the process, then B<sigsuspend>()  does not "
7479 "return.  If the signal is caught, then B<sigsuspend>()  returns after the "
7480 "signal handler returns, and the signal mask is restored to the state before "
7481 "the call to B<sigsuspend>()."
7482 msgstr ""
7483
7484 #. type: Plain text
7485 #: build/C/man2/sigsuspend.2:68
7486 msgid ""
7487 "It is not possible to block B<SIGKILL> or B<SIGSTOP>; specifying these "
7488 "signals in I<mask>, has no effect on the process's signal mask."
7489 msgstr ""
7490
7491 #. type: Plain text
7492 #: build/C/man2/sigsuspend.2:72
7493 msgid "B<sigsuspend>()  always returns -1, normally with the error B<EINTR>."
7494 msgstr ""
7495
7496 #. type: Plain text
7497 #: build/C/man2/sigsuspend.2:77
7498 msgid ""
7499 "I<mask> points to memory which is not a valid part of the process address "
7500 "space."
7501 msgstr ""
7502
7503 #. type: Plain text
7504 #: build/C/man2/sigsuspend.2:80
7505 msgid "The call was interrupted by a signal."
7506 msgstr ""
7507
7508 #. type: Plain text
7509 #: build/C/man2/sigsuspend.2:100
7510 msgid ""
7511 "Normally, B<sigsuspend>()  is used in conjunction with B<sigprocmask>(2)  in "
7512 "order to prevent delivery of a signal during the execution of a critical "
7513 "code section.  The caller first blocks the signals with B<sigprocmask>(2).  "
7514 "When the critical code has completed, the caller then waits for the signals "
7515 "by calling B<sigsuspend>()  with the signal mask that was returned by "
7516 "B<sigprocmask>(2)  (in the I<oldset> argument)."
7517 msgstr ""
7518
7519 #. type: Plain text
7520 #: build/C/man2/sigsuspend.2:114
7521 msgid ""
7522 "B<kill>(2), B<pause>(2), B<sigaction>(2), B<signal>(2), B<sigprocmask>(2), "
7523 "B<sigwaitinfo>(2), B<sigsetops>(3), B<sigwait>(3), B<signal>(7)"
7524 msgstr ""
7525
7526 #. type: TH
7527 #: build/C/man3/sigvec.3:24
7528 #, no-wrap
7529 msgid "SIGVEC"
7530 msgstr ""
7531
7532 #. type: Plain text
7533 #: build/C/man3/sigvec.3:27
7534 msgid "sigvec, sigblock, sigsetmask, siggetmask, sigmask - BSD signal API"
7535 msgstr ""
7536
7537 #. type: Plain text
7538 #: build/C/man3/sigvec.3:31
7539 msgid ""
7540 "B<int sigvec(int >I<sig>B<, struct sigvec *>I<vec>B<, struct sigvec "
7541 "*>I<ovec>B<);>"
7542 msgstr ""
7543
7544 #. type: Plain text
7545 #: build/C/man3/sigvec.3:33
7546 msgid "B<int sigmask(int >I<signum>B<);>"
7547 msgstr ""
7548
7549 #. type: Plain text
7550 #: build/C/man3/sigvec.3:35
7551 msgid "B<int sigblock(int >I<mask>B<);>"
7552 msgstr ""
7553
7554 #. type: Plain text
7555 #: build/C/man3/sigvec.3:37
7556 msgid "B<int sigsetmask(int >I<mask>B<);>"
7557 msgstr ""
7558
7559 #. type: Plain text
7560 #: build/C/man3/sigvec.3:39
7561 msgid "B<int siggetmask(void);>"
7562 msgstr ""
7563
7564 #. type: Plain text
7565 #: build/C/man3/sigvec.3:47
7566 msgid "All functions shown above: _BSD_SOURCE"
7567 msgstr ""
7568
7569 #. type: Plain text
7570 #: build/C/man3/sigvec.3:54
7571 msgid ""
7572 "These functions are provided in glibc as a compatibility interface for "
7573 "programs that make use of the historical BSD signal API.  This API is "
7574 "obsolete: new applications should use the POSIX signal API (B<sigaction>(2), "
7575 "B<sigprocmask>(2), etc.)"
7576 msgstr ""
7577
7578 #. type: Plain text
7579 #: build/C/man3/sigvec.3:79
7580 msgid ""
7581 "The B<sigvec>()  function sets and/or gets the disposition of the signal "
7582 "I<sig> (like the POSIX B<sigaction>(2)).  If I<vec> is not NULL, it points "
7583 "to a I<sigvec> structure that defines the new disposition for I<sig>.  If "
7584 "I<ovec> is not NULL, it points to a I<sigvec> structure that is used to "
7585 "return the previous disposition of I<sig>.  To obtain the current "
7586 "disposition of I<sig> without changing it, specify NULL for I<vec>, and a "
7587 "non-NULL pointer for I<ovec>."
7588 msgstr ""
7589
7590 #. type: Plain text
7591 #: build/C/man3/sigvec.3:89
7592 msgid "The I<sigvec> structure has the following form:"
7593 msgstr ""
7594
7595 #. type: Plain text
7596 #: build/C/man3/sigvec.3:97
7597 #, no-wrap
7598 msgid ""
7599 "struct sigvec {\n"
7600 "    void (*sv_handler)();  /* Signal disposition */\n"
7601 "    int    sv_mask;        /* Signals to be blocked in handler */\n"
7602 "    int    sv_flags;       /* Flags */\n"
7603 "};\n"
7604 msgstr ""
7605
7606 #. type: Plain text
7607 #: build/C/man3/sigvec.3:108
7608 msgid ""
7609 "The I<sv_handler> field specifies the disposition of the signal, and is "
7610 "either: the address of a signal handler function; or B<SIG_DFL> meaning the "
7611 "default disposition applies for the signal; or B<SIG_IGN> meaning that the "
7612 "signal is ignored."
7613 msgstr ""
7614
7615 #. type: Plain text
7616 #: build/C/man3/sigvec.3:122
7617 msgid ""
7618 "If I<sv_handler> specifies the address of a signal handler, then I<sv_mask> "
7619 "specifies a mask of signals that are to be blocked while the handler is "
7620 "executing.  In addition, the signal for which the handler is invoked is also "
7621 "blocked by default.  Attempts to block B<SIGKILL> or B<SIGSTOP> are silently "
7622 "ignored."
7623 msgstr ""
7624
7625 #. type: Plain text
7626 #: build/C/man3/sigvec.3:129
7627 msgid ""
7628 "If I<sv_handler> specifies the address of a signal handler, then the "
7629 "I<sv_flags> field specifies flags controlling what happens when the handler "
7630 "is called.  This field may contain zero or more of the following flags:"
7631 msgstr ""
7632
7633 #. type: TP
7634 #: build/C/man3/sigvec.3:129
7635 #, no-wrap
7636 msgid "B<SV_INTERRUPT>"
7637 msgstr ""
7638
7639 #. type: Plain text
7640 #: build/C/man3/sigvec.3:137
7641 msgid ""
7642 "If the signal handler interrupts a blocking system call, then upon return "
7643 "from the handler the system call will not be restarted: instead it will fail "
7644 "with the error B<EINTR>.  If this flag is not specified, then system calls "
7645 "are restarted by default."
7646 msgstr ""
7647
7648 #. type: TP
7649 #: build/C/man3/sigvec.3:137
7650 #, no-wrap
7651 msgid "B<SV_RESETHAND>"
7652 msgstr ""
7653
7654 #. type: Plain text
7655 #: build/C/man3/sigvec.3:146
7656 msgid ""
7657 "Reset the disposition of the signal to the default before calling the signal "
7658 "handler.  If this flag is not specified, then the handler remains "
7659 "established until explicitly removed by a later call to B<sigvec>()  or "
7660 "until the process performs an B<execve>(2)."
7661 msgstr ""
7662
7663 #. type: TP
7664 #: build/C/man3/sigvec.3:146
7665 #, no-wrap
7666 msgid "B<SV_ONSTACK>"
7667 msgstr ""
7668
7669 #. type: Plain text
7670 #: build/C/man3/sigvec.3:153
7671 msgid ""
7672 "Handle the signal on the alternate signal stack (historically established "
7673 "under BSD using the obsolete B<sigstack>()  function; the POSIX replacement "
7674 "is B<sigaltstack>(2))."
7675 msgstr ""
7676
7677 #. type: Plain text
7678 #: build/C/man3/sigvec.3:163
7679 msgid ""
7680 "The B<sigmask>()  function constructs and returns a \"signal mask\" for "
7681 "I<signum>.  For example, we can initialize the I<vec.sv_mask> field given to "
7682 "B<sigvec>()  using code such as the following:"
7683 msgstr ""
7684
7685 #. type: Plain text
7686 #: build/C/man3/sigvec.3:168
7687 #, no-wrap
7688 msgid ""
7689 "    vec.sv_mask = sigmask(SIGQUIT) | sigpause(SIGABRT);\n"
7690 "                /* Block SIGQUIT and SIGABRT during\n"
7691 "                   handler execution */\n"
7692 msgstr ""
7693
7694 #. type: Plain text
7695 #: build/C/man3/sigvec.3:183
7696 msgid ""
7697 "The B<sigblock>()  function adds the signals in I<mask> to the process's "
7698 "signal mask (like POSIX I<sigprocmask(SIG_BLOCK)>), and returns the "
7699 "process's previous signal mask.  Attempts to block B<SIGKILL> or B<SIGSTOP> "
7700 "are silently ignored."
7701 msgstr ""
7702
7703 #. type: Plain text
7704 #: build/C/man3/sigvec.3:191
7705 msgid ""
7706 "The B<sigsetmask>()  function sets the process's signal mask to the value "
7707 "given in I<mask> (like POSIX I<sigprocmask(SIG_SETMASK)>), and returns the "
7708 "process's previous signal mask."
7709 msgstr ""
7710
7711 #. type: Plain text
7712 #: build/C/man3/sigvec.3:197
7713 msgid ""
7714 "The B<siggetmask>()  function returns the process's current signal mask.  "
7715 "This call is equivalent to I<sigblock(0)>."
7716 msgstr ""
7717
7718 #. type: Plain text
7719 #: build/C/man3/sigvec.3:203
7720 msgid ""
7721 "The B<sigvec>()  function returns 0 on success; on error, it returns -1 and "
7722 "sets I<errno> to indicate the error."
7723 msgstr ""
7724
7725 #. type: Plain text
7726 #: build/C/man3/sigvec.3:209
7727 msgid ""
7728 "The B<sigblock>()  and B<sigsetmask>()  functions return the previous signal "
7729 "mask."
7730 msgstr ""
7731
7732 #. type: Plain text
7733 #: build/C/man3/sigvec.3:214
7734 msgid "The B<sigmask>()  function returns the signal mask for I<signum>."
7735 msgstr ""
7736
7737 #. type: Plain text
7738 #: build/C/man3/sigvec.3:219
7739 msgid "See the ERRORS under B<sigaction>(2)  and B<sigprocmask>(2)."
7740 msgstr ""
7741
7742 #. type: Plain text
7743 #: build/C/man3/sigvec.3:225
7744 msgid ""
7745 "All of these functions were in 4.3BSD, except B<siggetmask>(), whose origin "
7746 "is unclear.  These functions are obsolete: do not use them in new programs."
7747 msgstr ""
7748
7749 #. type: Plain text
7750 #: build/C/man3/sigvec.3:242
7751 msgid ""
7752 "On 4.3BSD, the B<signal>()  function provided reliable semantics (as when "
7753 "calling B<sigvec>()  with I<vec.sv_mask> equal to 0).  On System V, "
7754 "B<signal>()  provides unreliable semantics.  POSIX.1-2001 leaves these "
7755 "aspects of B<signal>()  unspecified.  See B<signal>(2)  for further details."
7756 msgstr ""
7757
7758 #. type: Plain text
7759 #: build/C/man3/sigvec.3:260
7760 msgid ""
7761 "B<kill>(2), B<pause>(2), B<sigaction>(2), B<signal>(2), B<sigprocmask>(2), "
7762 "B<raise>(3), B<sigpause>(3), B<sigset>(3), B<signal>(7)"
7763 msgstr ""
7764
7765 #. type: TH
7766 #: build/C/man3/sigwait.3:24
7767 #, no-wrap
7768 msgid "SIGWAIT"
7769 msgstr ""
7770
7771 #. type: TH
7772 #: build/C/man3/sigwait.3:24
7773 #, no-wrap
7774 msgid "2010-09-10"
7775 msgstr ""
7776
7777 #. type: Plain text
7778 #: build/C/man3/sigwait.3:27
7779 msgid "sigwait - wait for a signal"
7780 msgstr ""
7781
7782 #. type: Plain text
7783 #: build/C/man3/sigwait.3:32
7784 #, no-wrap
7785 msgid "B< int sigwait(const sigset_t *>I<set>B<, int *>I<sig>B<);>\n"
7786 msgstr ""
7787
7788 #. type: Plain text
7789 #: build/C/man3/sigwait.3:42
7790 msgid "B<sigwait>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
7791 msgstr ""
7792
7793 #. type: Plain text
7794 #: build/C/man3/sigwait.3:53
7795 msgid ""
7796 "The B<sigwait>()  function suspends execution of the calling thread until "
7797 "the delivery of one of the signals specified in the signal set I<set>.  The "
7798 "function accepts the signal (removes it from the pending list of signals), "
7799 "and returns the signal number in I<sig>."
7800 msgstr ""
7801
7802 #. type: Plain text
7803 #: build/C/man3/sigwait.3:59
7804 msgid ""
7805 "The operation of B<sigwait>()  is the same as B<sigwaitinfo>(2), except "
7806 "that:"
7807 msgstr ""
7808
7809 #. type: Plain text
7810 #: build/C/man3/sigwait.3:64
7811 msgid ""
7812 "B<sigwait>()  only returns the signal number, rather than a I<siginfo_t> "
7813 "structure describing the signal."
7814 msgstr ""
7815
7816 #. type: Plain text
7817 #: build/C/man3/sigwait.3:66
7818 msgid "The return values of the two functions are different."
7819 msgstr ""
7820
7821 #. type: Plain text
7822 #: build/C/man3/sigwait.3:71
7823 msgid ""
7824 "On success, B<sigwait>()  returns 0.  On error, it returns a positive error "
7825 "number (listed in ERRORS)."
7826 msgstr ""
7827
7828 #.  Does not occur for glibc.
7829 #. type: Plain text
7830 #: build/C/man3/sigwait.3:77
7831 msgid "I<set> contains an invalid signal number."
7832 msgstr ""
7833
7834 #. type: Plain text
7835 #: build/C/man3/sigwait.3:83
7836 msgid "B<sigwait>()  is implemented using B<sigtimedwait>(2)."
7837 msgstr ""
7838
7839 #. type: Plain text
7840 #: build/C/man3/sigwait.3:86
7841 msgid "See B<pthread_sigmask>(3)."
7842 msgstr ""
7843
7844 #. type: Plain text
7845 #: build/C/man3/sigwait.3:94
7846 msgid ""
7847 "B<sigaction>(2), B<signalfd>(2), B<sigpending>(2), B<sigsuspend>(2), "
7848 "B<sigwaitinfo>(2), B<sigsetops>(3), B<signal>(7)"
7849 msgstr ""
7850
7851 #. type: TH
7852 #: build/C/man2/sigwaitinfo.2:23
7853 #, no-wrap
7854 msgid "SIGWAITINFO"
7855 msgstr ""
7856
7857 #. type: TH
7858 #: build/C/man2/sigwaitinfo.2:23
7859 #, no-wrap
7860 msgid "2011-10-03"
7861 msgstr ""
7862
7863 #. type: Plain text
7864 #: build/C/man2/sigwaitinfo.2:26
7865 msgid "sigwaitinfo, sigtimedwait - synchronously wait for queued signals"
7866 msgstr ""
7867
7868 #. type: Plain text
7869 #: build/C/man2/sigwaitinfo.2:31
7870 #, no-wrap
7871 msgid "B<int sigwaitinfo(const sigset_t *>I<set>B<, siginfo_t *>I<info>B<);>\n"
7872 msgstr ""
7873
7874 #. type: Plain text
7875 #: build/C/man2/sigwaitinfo.2:34
7876 #, no-wrap
7877 msgid ""
7878 "B<int sigtimedwait(const sigset_t *>I<set>B<, siginfo_t *>I<info>B<, >\n"
7879 "B<                 const struct timespec *>I<timeout>B<);>\n"
7880 msgstr ""
7881
7882 #. type: Plain text
7883 #: build/C/man2/sigwaitinfo.2:44
7884 msgid "B<sigwaitinfo>(), B<sigtimedwait>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
7885 msgstr ""
7886
7887 #. type: Plain text
7888 #: build/C/man2/sigwaitinfo.2:54
7889 msgid ""
7890 "B<sigwaitinfo>()  suspends execution of the calling thread until one of the "
7891 "signals in I<set> is delivered.  (If one of the signals in I<set> is already "
7892 "pending for the calling thread, B<sigwaitinfo>()  will return immediately "
7893 "with information about that signal.)"
7894 msgstr ""
7895
7896 #. type: Plain text
7897 #: build/C/man2/sigwaitinfo.2:66
7898 msgid ""
7899 "B<sigwaitinfo>()  removes the delivered signal from the set of pending "
7900 "signals and returns the signal number as its function result.  If the "
7901 "I<info> argument is not NULL, then it returns a structure of type "
7902 "I<siginfo_t> (see B<sigaction>(2))  containing information about the signal."
7903 msgstr ""
7904
7905 #. type: Plain text
7906 #: build/C/man2/sigwaitinfo.2:72
7907 msgid ""
7908 "Signals returned via B<sigwaitinfo>()  are delivered in the usual order; see "
7909 "B<signal>(7)  for further details."
7910 msgstr ""
7911
7912 #. type: Plain text
7913 #: build/C/man2/sigwaitinfo.2:81
7914 msgid ""
7915 "B<sigtimedwait>()  operates in exactly the same way as B<sigwaitinfo>()  "
7916 "except that it has an additional argument, I<timeout>, which enables an "
7917 "upper bound to be placed on the time for which the thread is suspended.  "
7918 "This argument is of the following type:"
7919 msgstr ""
7920
7921 #. type: Plain text
7922 #: build/C/man2/sigwaitinfo.2:88
7923 #, no-wrap
7924 msgid ""
7925 "struct timespec {\n"
7926 "    long    tv_sec;         /* seconds */\n"
7927 "    long    tv_nsec;        /* nanoseconds */\n"
7928 "}\n"
7929 msgstr ""
7930
7931 #. type: Plain text
7932 #: build/C/man2/sigwaitinfo.2:98
7933 msgid ""
7934 "If both fields of this structure are specified as 0, a poll is performed: "
7935 "B<sigtimedwait>()  returns immediately, either with information about a "
7936 "signal that was pending for the caller, or with an error if none of the "
7937 "signals in I<set> was pending."
7938 msgstr ""
7939
7940 #. type: Plain text
7941 #: build/C/man2/sigwaitinfo.2:107
7942 msgid ""
7943 "On success, both B<sigwaitinfo>()  and B<sigtimedwait>()  return a signal "
7944 "number (i.e., a value greater than zero).  On failure both calls return -1, "
7945 "with I<errno> set to indicate the error."
7946 msgstr ""
7947
7948 #. type: Plain text
7949 #: build/C/man2/sigwaitinfo.2:116
7950 msgid ""
7951 "No signal in I<set> was delivered within the I<timeout> period specified to "
7952 "B<sigtimedwait>()."
7953 msgstr ""
7954
7955 #. type: Plain text
7956 #: build/C/man2/sigwaitinfo.2:122
7957 msgid ""
7958 "The wait was interrupted by a signal handler; see B<signal>(7).  (This "
7959 "handler was for a signal other than one of those in I<set>.)"
7960 msgstr ""
7961
7962 #. type: Plain text
7963 #: build/C/man2/sigwaitinfo.2:126
7964 msgid "I<timeout> was invalid."
7965 msgstr ""
7966
7967 #. type: Plain text
7968 #: build/C/man2/sigwaitinfo.2:145
7969 msgid ""
7970 "In normal usage, the calling program blocks the signals in I<set> via a "
7971 "prior call to B<sigprocmask>(2)  (so that the default disposition for these "
7972 "signals does not occur if they are delivered between successive calls to "
7973 "B<sigwaitinfo>()  or B<sigtimedwait>())  and does not establish handlers for "
7974 "these signals.  In a multithreaded program, the signal should be blocked in "
7975 "all threads to prevent the signal being delivered to a thread other than the "
7976 "one calling B<sigwaitinfo>()  or B<sigtimedwait>())."
7977 msgstr ""
7978
7979 #. type: Plain text
7980 #: build/C/man2/sigwaitinfo.2:150
7981 msgid ""
7982 "The set of signals that is pending for a given thread is the union of the "
7983 "set of signals that is pending specifically for that thread and the set of "
7984 "signals that is pending for the process as a whole (see B<signal>(7))."
7985 msgstr ""
7986
7987 #. type: Plain text
7988 #: build/C/man2/sigwaitinfo.2:156
7989 msgid "Attempts to wait for B<SIGKILL> and B<SIGSTOP> are silently ignored."
7990 msgstr ""
7991
7992 #. type: Plain text
7993 #: build/C/man2/sigwaitinfo.2:165
7994 msgid ""
7995 "If multiple threads of a process are blocked waiting for the same signal(s) "
7996 "in B<sigwaitinfo>()  or B<sigtimedwait>(), then exactly one of the threads "
7997 "will actually receive the signal if it is delivered to the process as a "
7998 "whole; which of the threads receives the signal is indeterminate."
7999 msgstr ""
8000
8001 #. type: Plain text
8002 #: build/C/man2/sigwaitinfo.2:174
8003 msgid ""
8004 "POSIX leaves the meaning of a NULL value for the I<timeout> argument of "
8005 "B<sigtimedwait>()  unspecified, permitting the possibility that this has the "
8006 "same meaning as a call to B<sigwaitinfo>(), and indeed this is what is done "
8007 "on Linux."
8008 msgstr ""
8009
8010 #. type: Plain text
8011 #: build/C/man2/sigwaitinfo.2:179
8012 msgid ""
8013 "On Linux, B<sigwaitinfo>()  is a library function implemented on top of "
8014 "B<sigtimedwait>()."
8015 msgstr ""
8016
8017 #. type: Plain text
8018 #: build/C/man2/sigwaitinfo.2:191
8019 msgid ""
8020 "B<kill>(2), B<sigaction>(2), B<signal>(2), B<signalfd>(2), B<sigpending>(2), "
8021 "B<sigprocmask>(2), B<sigqueue>(3), B<sigsetops>(3), B<sigwait>(3), "
8022 "B<signal>(7), B<time>(7)"
8023 msgstr ""
8024
8025 #. type: TH
8026 #: build/C/man3/sysv_signal.3:23
8027 #, no-wrap
8028 msgid "SYSV_SIGNAL"
8029 msgstr ""
8030
8031 #. type: TH
8032 #: build/C/man3/sysv_signal.3:23
8033 #, no-wrap
8034 msgid "2007-05-04"
8035 msgstr ""
8036
8037 #. type: Plain text
8038 #: build/C/man3/sysv_signal.3:26
8039 msgid "sysv_signal - signal handling with System V semantics"
8040 msgstr ""
8041
8042 #. type: Plain text
8043 #: build/C/man3/sysv_signal.3:28
8044 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
8045 msgstr ""
8046
8047 #. type: Plain text
8048 #: build/C/man3/sysv_signal.3:34
8049 msgid "B<sighandler_t sysv_signal(int >I<signum>B<, sighandler_t >I<handler>B<);>"
8050 msgstr ""
8051
8052 #. type: Plain text
8053 #: build/C/man3/sysv_signal.3:39
8054 msgid ""
8055 "The B<sysv_signal>()  function takes the same arguments, and performs the "
8056 "same task, as B<signal>(2)."
8057 msgstr ""
8058
8059 #. type: Plain text
8060 #: build/C/man3/sysv_signal.3:49
8061 msgid ""
8062 "However B<sysv_signal>()  provides the System V unreliable signal semantics, "
8063 "that is: a) the disposition of the signal is reset to the default when the "
8064 "handler is invoked; b) delivery of further instances of the signal is not "
8065 "blocked while the signal handler is executing; and c) if the handler "
8066 "interrupts (certain) blocking system calls, then the system call is not "
8067 "automatically restarted."
8068 msgstr ""
8069
8070 #. type: Plain text
8071 #: build/C/man3/sysv_signal.3:55
8072 msgid ""
8073 "The B<sysv_signal>()  function returns the previous value of the signal "
8074 "handler, or B<SIG_ERR> on error."
8075 msgstr ""
8076
8077 #. type: Plain text
8078 #: build/C/man3/sysv_signal.3:60
8079 msgid "This function is nonstandard."
8080 msgstr ""
8081
8082 #. type: Plain text
8083 #: build/C/man3/sysv_signal.3:66
8084 msgid "Use of B<sysv_signal>()  should be avoided; use B<sigaction>(2)  instead."
8085 msgstr ""
8086
8087 #. type: Plain text
8088 #: build/C/man3/sysv_signal.3:77
8089 msgid ""
8090 "On older Linux systems, B<sysv_signal>()  and B<signal>(2)  were "
8091 "equivalent.  But on newer systems, B<signal>(2)  provides reliable signal "
8092 "semantics; see B<signal>(2)  for details."
8093 msgstr ""
8094
8095 #. type: Plain text
8096 #: build/C/man3/sysv_signal.3:90
8097 msgid "B<sigaction>(2), B<signal>(2), B<bsd_signal>(3), B<signal>(7)"
8098 msgstr ""
8099
8100 #. type: TH
8101 #: build/C/man2/timer_create.2:29
8102 #, no-wrap
8103 msgid "TIMER_CREATE"
8104 msgstr ""
8105
8106 #. type: TH
8107 #: build/C/man2/timer_create.2:29
8108 #, no-wrap
8109 msgid "2010-09-27"
8110 msgstr ""
8111
8112 #. type: Plain text
8113 #: build/C/man2/timer_create.2:32
8114 msgid "timer_create - create a POSIX per-process timer"
8115 msgstr ""
8116
8117 #. type: Plain text
8118 #: build/C/man2/timer_create.2:36
8119 #, no-wrap
8120 msgid ""
8121 "B<#include E<lt>signal.hE<gt>>\n"
8122 "B<#include E<lt>time.hE<gt>>\n"
8123 msgstr ""
8124
8125 #. type: Plain text
8126 #: build/C/man2/timer_create.2:39
8127 #, no-wrap
8128 msgid ""
8129 "B<int timer_create(clockid_t >I<clockid>B<, struct sigevent *>I<sevp>B<,>\n"
8130 "B<                 timer_t *>I<timerid>B<);>\n"
8131 msgstr ""
8132
8133 #. type: Plain text
8134 #: build/C/man2/timer_create.2:42 build/C/man2/timer_delete.2:34 build/C/man2/timer_getoverrun.2:34 build/C/man2/timer_settime.2:38
8135 msgid "Link with I<-lrt>."
8136 msgstr ""
8137
8138 #. type: Plain text
8139 #: build/C/man2/timer_create.2:50
8140 msgid "B<timer_create>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
8141 msgstr ""
8142
8143 #. type: Plain text
8144 #: build/C/man2/timer_create.2:58
8145 msgid ""
8146 "B<timer_create>()  creates a new per-process interval timer.  The ID of the "
8147 "new timer is returned in the buffer pointed to by I<timerid>, which must be "
8148 "a non-NULL pointer.  This ID is unique within the process, until the timer "
8149 "is deleted.  The new timer is initially disarmed."
8150 msgstr ""
8151
8152 #. type: Plain text
8153 #: build/C/man2/timer_create.2:63
8154 msgid ""
8155 "The I<clockid> argument specifies the clock that the new timer uses to "
8156 "measure time.  It can be specified as one of the following values:"
8157 msgstr ""
8158
8159 #. type: TP
8160 #: build/C/man2/timer_create.2:63
8161 #, no-wrap
8162 msgid "B<CLOCK_REALTIME>"
8163 msgstr ""
8164
8165 #. type: Plain text
8166 #: build/C/man2/timer_create.2:66
8167 msgid "A settable system-wide real-time clock."
8168 msgstr ""
8169
8170 #. type: TP
8171 #: build/C/man2/timer_create.2:66
8172 #, no-wrap
8173 msgid "B<CLOCK_MONOTONIC>"
8174 msgstr ""
8175
8176 #.  Note: the CLOCK_MONOTONIC_RAW clock added for clock_gettime()
8177 #.  in 2.6.28 is not supported for POSIX timers -- mtk, Feb 2009
8178 #. type: Plain text
8179 #: build/C/man2/timer_create.2:73
8180 msgid ""
8181 "A nonsettable monotonically increasing clock that measures time from some "
8182 "unspecified point in the past that does not change after system startup."
8183 msgstr ""
8184
8185 #. type: TP
8186 #: build/C/man2/timer_create.2:73
8187 #, no-wrap
8188 msgid "B<CLOCK_PROCESS_CPUTIME_ID> (since Linux 2.6.12)"
8189 msgstr ""
8190
8191 #. type: Plain text
8192 #: build/C/man2/timer_create.2:77
8193 msgid ""
8194 "A clock that measures (user and system) CPU time consumed by (all of the "
8195 "threads in) the calling process."
8196 msgstr ""
8197
8198 #. type: TP
8199 #: build/C/man2/timer_create.2:77
8200 #, no-wrap
8201 msgid "B<CLOCK_THREAD_CPUTIME_ID> (since Linux 2.6.12)"
8202 msgstr ""
8203
8204 #.  The CLOCK_MONOTONIC_RAW that was added in 2.6.28 can't be used
8205 #.  to create a timer -- mtk, Feb 2009
8206 #. type: Plain text
8207 #: build/C/man2/timer_create.2:83
8208 msgid ""
8209 "A clock that measures (user and system) CPU time consumed by the calling "
8210 "thread."
8211 msgstr ""
8212
8213 #. type: Plain text
8214 #: build/C/man2/timer_create.2:92
8215 msgid ""
8216 "As well as the above values, I<clockid> can be specified as the I<clockid> "
8217 "returned by a call to B<clock_getcpuclockid>(3)  or "
8218 "B<pthread_getcpuclockid>(3)."
8219 msgstr ""
8220
8221 #. type: Plain text
8222 #: build/C/man2/timer_create.2:101
8223 msgid ""
8224 "The I<sevp> argument points to a I<sigevent> structure that specifies how "
8225 "the caller should be notified when the timer expires.  For the definition "
8226 "and general details of this structure, see B<sigevent>(7)."
8227 msgstr ""
8228
8229 #. type: Plain text
8230 #: build/C/man2/timer_create.2:105
8231 msgid "The I<sevp.sigev_notify> field can have the following values:"
8232 msgstr ""
8233
8234 #. type: Plain text
8235 #: build/C/man2/timer_create.2:110
8236 msgid ""
8237 "Don't asynchronously notify when the timer expires.  Progress of the timer "
8238 "can be monitored using B<timer_gettime>(2)."
8239 msgstr ""
8240
8241 #. type: Plain text
8242 #: build/C/man2/timer_create.2:128
8243 msgid ""
8244 "Upon timer expiration, generate the signal I<sigev_signo> for the process.  "
8245 "See B<sigevent>(7)  for general details.  The I<si_code> field of the "
8246 "I<siginfo_t> structure will be set to B<SI_TIMER>.  At any point in time, at "
8247 "most one signal is queued to the process for a given timer; see "
8248 "B<timer_getoverrun>(2)  for more details."
8249 msgstr ""
8250
8251 #. type: Plain text
8252 #: build/C/man2/timer_create.2:136
8253 msgid ""
8254 "Upon timer expiration, invoke I<sigev_notify_function> as if it were the "
8255 "start function of a new thread.  See B<sigevent>(7)  for details."
8256 msgstr ""
8257
8258 #. type: Plain text
8259 #: build/C/man2/timer_create.2:150
8260 msgid ""
8261 "As for B<SIGEV_SIGNAL>, but the signal is targeted at the thread whose ID is "
8262 "given in I<sigev_notify_thread_id>, which must be a thread in the same "
8263 "process as the caller.  The I<sigev_notify_thread_id> field specifies a "
8264 "kernel thread ID, that is, the value returned by B<clone>(2)  or "
8265 "B<gettid>(2).  This flag is only intended for use by threading libraries."
8266 msgstr ""
8267
8268 #. type: Plain text
8269 #: build/C/man2/timer_create.2:165
8270 msgid ""
8271 "Specifying I<sevp> as NULL is equivalent to specifying a pointer to a "
8272 "I<sigevent> structure in which I<sigev_notify> is B<SIGEV_SIGNAL>, "
8273 "I<sigev_signo> is B<SIGALRM>, and I<sigev_value.sival_int> is the timer ID."
8274 msgstr ""
8275
8276 #. type: Plain text
8277 #: build/C/man2/timer_create.2:173
8278 msgid ""
8279 "On success, B<timer_create>()  returns 0, and the ID of the new timer is "
8280 "placed in I<*timerid>.  On failure, -1 is returned, and I<errno> is set to "
8281 "indicate the error."
8282 msgstr ""
8283
8284 #. type: Plain text
8285 #: build/C/man2/timer_create.2:177
8286 msgid "Temporary error during kernel allocation of timer structures."
8287 msgstr ""
8288
8289 #. type: Plain text
8290 #: build/C/man2/timer_create.2:185
8291 msgid ""
8292 "Clock ID, I<sigev_notify>, I<sigev_signo>, or I<sigev_notify_thread_id> is "
8293 "invalid."
8294 msgstr ""
8295
8296 #.  glibc layer: malloc()
8297 #. type: Plain text
8298 #: build/C/man2/timer_create.2:189
8299 msgid "Could not allocate memory."
8300 msgstr ""
8301
8302 #. type: Plain text
8303 #: build/C/man2/timer_create.2:191 build/C/man2/timer_delete.2:64 build/C/man2/timer_getoverrun.2:94
8304 msgid "This system call is available since Linux 2.6."
8305 msgstr ""
8306
8307 #. type: Plain text
8308 #: build/C/man2/timer_create.2:196
8309 msgid "A program may create multiple interval timers using B<timer_create>()."
8310 msgstr ""
8311
8312 #. type: Plain text
8313 #: build/C/man2/timer_create.2:201
8314 msgid ""
8315 "Timers are not inherited by the child of a B<fork>(2), and are disarmed and "
8316 "deleted during an B<execve>(2)."
8317 msgstr ""
8318
8319 #. type: Plain text
8320 #: build/C/man2/timer_create.2:209
8321 msgid ""
8322 "The kernel preallocates a \"queued real-time signal\" for each timer created "
8323 "using B<timer_create>().  Consequently, the number of timers is limited by "
8324 "the B<RLIMIT_SIGPENDING> resource limit (see B<setrlimit>(2))."
8325 msgstr ""
8326
8327 #. type: Plain text
8328 #: build/C/man2/timer_create.2:214
8329 msgid ""
8330 "The timers created by B<timer_create>()  are commonly known as \"POSIX "
8331 "(interval) timers\".  The POSIX timers API consists of the following "
8332 "interfaces:"
8333 msgstr ""
8334
8335 #. type: Plain text
8336 #: build/C/man2/timer_create.2:217
8337 msgid "B<timer_create>(): Create a timer."
8338 msgstr ""
8339
8340 #. type: Plain text
8341 #: build/C/man2/timer_create.2:220
8342 msgid "B<timer_settime>(2): Arm (start) or disarm (stop) a timer."
8343 msgstr ""
8344
8345 #. type: Plain text
8346 #: build/C/man2/timer_create.2:224
8347 msgid ""
8348 "B<timer_gettime>(2): Fetch the time remaining until the next expiration of a "
8349 "timer, along with the interval setting of the timer."
8350 msgstr ""
8351
8352 #. type: Plain text
8353 #: build/C/man2/timer_create.2:227
8354 msgid ""
8355 "B<timer_getoverrun>(2): Return the overrun count for the last timer "
8356 "expiration."
8357 msgstr ""
8358
8359 #. type: Plain text
8360 #: build/C/man2/timer_create.2:230
8361 msgid "B<timer_delete>(2): Disarm and delete a timer."
8362 msgstr ""
8363
8364 #. type: Plain text
8365 #: build/C/man2/timer_create.2:233
8366 msgid ""
8367 "Part of the implementation of the POSIX timers API is provided by glibc.  In "
8368 "particular:"
8369 msgstr ""
8370
8371 #. type: Plain text
8372 #: build/C/man2/timer_create.2:237
8373 msgid ""
8374 "The functionality for B<SIGEV_THREAD> is implemented within glibc, rather "
8375 "than the kernel."
8376 msgstr ""
8377
8378 #.  See the glibc source file kernel-posix-timers.h for the structure
8379 #.  that glibc uses to map userspace timer IDs to kernel timer IDs
8380 #.  The kernel-level timer ID is exposed via siginfo.si_tid.
8381 #. type: Plain text
8382 #: build/C/man2/timer_create.2:243
8383 msgid ""
8384 "The timer IDs presented at user level are maintained by glibc, which maps "
8385 "these IDs to the timer IDs employed by the kernel."
8386 msgstr ""
8387
8388 #. type: Plain text
8389 #: build/C/man2/timer_create.2:251
8390 msgid ""
8391 "The POSIX timers system calls first appeared in Linux 2.6.  Prior to this, "
8392 "glibc provided an incomplete userspace implementation (B<CLOCK_REALTIME> "
8393 "timers only) using POSIX threads, and current glibc falls back to this "
8394 "implementation on systems running pre-2.6 Linux kernels."
8395 msgstr ""
8396
8397 #. type: Plain text
8398 #: build/C/man2/timer_create.2:263
8399 msgid ""
8400 "The program below takes two arguments: a sleep period in seconds, and a "
8401 "timer frequency in nanoseconds.  The program establishes a handler for the "
8402 "signal it uses for the timer, blocks that signal, creates and arms a timer "
8403 "that expires with the given frequency, sleeps for the specified number of "
8404 "seconds, and then unblocks the timer signal.  Assuming that the timer "
8405 "expired at least once while the program slept, the signal handler will be "
8406 "invoked, and the handler displays some information about the timer "
8407 "notification.  The program terminates after one invocation of the signal "
8408 "handler."
8409 msgstr ""
8410
8411 #. type: Plain text
8412 #: build/C/man2/timer_create.2:268
8413 msgid ""
8414 "In the following example run, the program sleeps for 1 second, after "
8415 "creating a timer that has a frequency of 100 nanoseconds.  By the time the "
8416 "signal is unblocked and delivered, there have been around ten million "
8417 "overruns."
8418 msgstr ""
8419
8420 #. type: Plain text
8421 #: build/C/man2/timer_create.2:280
8422 #, no-wrap
8423 msgid ""
8424 "$ B<./a.out 1 100>\n"
8425 "Establishing handler for signal 34\n"
8426 "Blocking signal 34\n"
8427 "timer ID is 0x804c008\n"
8428 "Sleeping for 1 seconds\n"
8429 "Unblocking signal 34\n"
8430 "Caught signal 34\n"
8431 "    sival_ptr = 0xbfb174f4;     *sival_ptr = 0x804c008\n"
8432 "    overrun count = 10004886\n"
8433 msgstr ""
8434
8435 #. type: SS
8436 #: build/C/man2/timer_create.2:282
8437 #, no-wrap
8438 msgid "Program Source"
8439 msgstr ""
8440
8441 #. type: Plain text
8442 #: build/C/man2/timer_create.2:290
8443 #, no-wrap
8444 msgid ""
8445 "#include E<lt>stdlib.hE<gt>\n"
8446 "#include E<lt>unistd.hE<gt>\n"
8447 "#include E<lt>stdio.hE<gt>\n"
8448 "#include E<lt>signal.hE<gt>\n"
8449 "#include E<lt>time.hE<gt>\n"
8450 msgstr ""
8451
8452 #. type: Plain text
8453 #: build/C/man2/timer_create.2:293
8454 #, no-wrap
8455 msgid ""
8456 "#define CLOCKID CLOCK_REALTIME\n"
8457 "#define SIG SIGRTMIN\n"
8458 msgstr ""
8459
8460 #. type: Plain text
8461 #: build/C/man2/timer_create.2:296
8462 #, no-wrap
8463 msgid ""
8464 "#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \\e\n"
8465 "                        } while (0)\n"
8466 msgstr ""
8467
8468 #. type: Plain text
8469 #: build/C/man2/timer_create.2:302
8470 #, no-wrap
8471 msgid ""
8472 "static void\n"
8473 "print_siginfo(siginfo_t *si)\n"
8474 "{\n"
8475 "    timer_t *tidp;\n"
8476 "    int or;\n"
8477 msgstr ""
8478
8479 #. type: Plain text
8480 #: build/C/man2/timer_create.2:304
8481 #, no-wrap
8482 msgid "    tidp = si-E<gt>si_value.sival_ptr;\n"
8483 msgstr ""
8484
8485 #. type: Plain text
8486 #: build/C/man2/timer_create.2:307
8487 #, no-wrap
8488 msgid ""
8489 "    printf(\"    sival_ptr = %p; \", si-E<gt>si_value.sival_ptr);\n"
8490 "    printf(\"    *sival_ptr = 0x%lx\\en\", (long) *tidp);\n"
8491 msgstr ""
8492
8493 #. type: Plain text
8494 #: build/C/man2/timer_create.2:314
8495 #, no-wrap
8496 msgid ""
8497 "    or = timer_getoverrun(*tidp);\n"
8498 "    if (or == -1)\n"
8499 "        errExit(\"timer_getoverrun\");\n"
8500 "    else\n"
8501 "        printf(\"    overrun count = %d\\en\", or);\n"
8502 "}\n"
8503 msgstr ""
8504
8505 #. type: Plain text
8506 #: build/C/man2/timer_create.2:321
8507 #, no-wrap
8508 msgid ""
8509 "static void\n"
8510 "handler(int sig, siginfo_t *si, void *uc)\n"
8511 "{\n"
8512 "    /* Note: calling printf() from a signal handler is not\n"
8513 "       strictly correct, since printf() is not async-signal-safe;\n"
8514 "       see signal(7) */\n"
8515 msgstr ""
8516
8517 #. type: Plain text
8518 #: build/C/man2/timer_create.2:326
8519 #, no-wrap
8520 msgid ""
8521 "    printf(\"Caught signal %d\\en\", sig);\n"
8522 "    print_siginfo(si);\n"
8523 "    signal(sig, SIG_IGN);\n"
8524 "}\n"
8525 msgstr ""
8526
8527 #. type: Plain text
8528 #: build/C/man2/timer_create.2:336
8529 #, no-wrap
8530 msgid ""
8531 "int\n"
8532 "main(int argc, char *argv[])\n"
8533 "{\n"
8534 "    timer_t timerid;\n"
8535 "    struct sigevent sev;\n"
8536 "    struct itimerspec its;\n"
8537 "    long long freq_nanosecs;\n"
8538 "    sigset_t mask;\n"
8539 "    struct sigaction sa;\n"
8540 msgstr ""
8541
8542 #. type: Plain text
8543 #: build/C/man2/timer_create.2:342
8544 #, no-wrap
8545 msgid ""
8546 "    if (argc != 3) {\n"
8547 "        fprintf(stderr, \"Usage: %s E<lt>sleep-secsE<gt> "
8548 "E<lt>freq-nanosecsE<gt>\\en\",\n"
8549 "                argv[0]);\n"
8550 "        exit(EXIT_FAILURE);\n"
8551 "    }\n"
8552 msgstr ""
8553
8554 #. type: Plain text
8555 #: build/C/man2/timer_create.2:344
8556 #, no-wrap
8557 msgid "    /* Establish handler for timer signal */\n"
8558 msgstr ""
8559
8560 #. type: Plain text
8561 #: build/C/man2/timer_create.2:351
8562 #, no-wrap
8563 msgid ""
8564 "    printf(\"Establishing handler for signal %d\\en\", SIG);\n"
8565 "    sa.sa_flags = SA_SIGINFO;\n"
8566 "    sa.sa_sigaction = handler;\n"
8567 "    sigemptyset(&sa.sa_mask);\n"
8568 "    if (sigaction(SIG, &sa, NULL) == -1)\n"
8569 "        errExit(\"sigaction\");\n"
8570 msgstr ""
8571
8572 #. type: Plain text
8573 #: build/C/man2/timer_create.2:353
8574 #, no-wrap
8575 msgid "    /* Block timer signal temporarily */\n"
8576 msgstr ""
8577
8578 #. type: Plain text
8579 #: build/C/man2/timer_create.2:359
8580 #, no-wrap
8581 msgid ""
8582 "    printf(\"Blocking signal %d\\en\", SIG);\n"
8583 "    sigemptyset(&mask);\n"
8584 "    sigaddset(&mask, SIG);\n"
8585 "    if (sigprocmask(SIG_SETMASK, &mask, NULL) == -1)\n"
8586 "        errExit(\"sigprocmask\");\n"
8587 msgstr ""
8588
8589 #. type: Plain text
8590 #: build/C/man2/timer_create.2:361
8591 #, no-wrap
8592 msgid "    /* Create the timer */\n"
8593 msgstr ""
8594
8595 #. type: Plain text
8596 #: build/C/man2/timer_create.2:367
8597 #, no-wrap
8598 msgid ""
8599 "    sev.sigev_notify = SIGEV_SIGNAL;\n"
8600 "    sev.sigev_signo = SIG;\n"
8601 "    sev.sigev_value.sival_ptr = &timerid;\n"
8602 "    if (timer_create(CLOCKID, &sev, &timerid) == -1)\n"
8603 "        errExit(\"timer_create\");\n"
8604 msgstr ""
8605
8606 #. type: Plain text
8607 #: build/C/man2/timer_create.2:369
8608 #, no-wrap
8609 msgid "    printf(\"timer ID is 0x%lx\\en\", (long) timerid);\n"
8610 msgstr ""
8611
8612 #. type: Plain text
8613 #: build/C/man2/timer_create.2:371
8614 #, no-wrap
8615 msgid "    /* Start the timer */\n"
8616 msgstr ""
8617
8618 #. type: Plain text
8619 #: build/C/man2/timer_create.2:377
8620 #, no-wrap
8621 msgid ""
8622 "    freq_nanosecs = atoll(argv[2]);\n"
8623 "    its.it_value.tv_sec = freq_nanosecs / 1000000000;\n"
8624 "    its.it_value.tv_nsec = freq_nanosecs % 1000000000;\n"
8625 "    its.it_interval.tv_sec = its.it_value.tv_sec;\n"
8626 "    its.it_interval.tv_nsec = its.it_value.tv_nsec;\n"
8627 msgstr ""
8628
8629 #. type: Plain text
8630 #: build/C/man2/timer_create.2:380
8631 #, no-wrap
8632 msgid ""
8633 "    if (timer_settime(timerid, 0, &its, NULL) == -1)\n"
8634 "         errExit(\"timer_settime\");\n"
8635 msgstr ""
8636
8637 #. type: Plain text
8638 #: build/C/man2/timer_create.2:383
8639 #, no-wrap
8640 msgid ""
8641 "    /* Sleep for a while; meanwhile, the timer may expire\n"
8642 "       multiple times */\n"
8643 msgstr ""
8644
8645 #. type: Plain text
8646 #: build/C/man2/timer_create.2:386
8647 #, no-wrap
8648 msgid ""
8649 "    printf(\"Sleeping for %d seconds\\en\", atoi(argv[1]));\n"
8650 "    sleep(atoi(argv[1]));\n"
8651 msgstr ""
8652
8653 #. type: Plain text
8654 #: build/C/man2/timer_create.2:389
8655 #, no-wrap
8656 msgid ""
8657 "    /* Unlock the timer signal, so that timer notification\n"
8658 "       can be delivered */\n"
8659 msgstr ""
8660
8661 #. type: Plain text
8662 #: build/C/man2/timer_create.2:393
8663 #, no-wrap
8664 msgid ""
8665 "    printf(\"Unblocking signal %d\\en\", SIG);\n"
8666 "    if (sigprocmask(SIG_UNBLOCK, &mask, NULL) == -1)\n"
8667 "        errExit(\"sigprocmask\");\n"
8668 msgstr ""
8669
8670 #. type: Plain text
8671 #: build/C/man2/timer_create.2:396 build/C/man2/timerfd_create.2:533
8672 #, no-wrap
8673 msgid ""
8674 "    exit(EXIT_SUCCESS);\n"
8675 "}\n"
8676 msgstr ""
8677
8678 #. type: Plain text
8679 #: build/C/man2/timer_create.2:410
8680 msgid ""
8681 "B<clock_gettime>(2), B<setitimer>(2), B<timer_delete>(2), "
8682 "B<timer_getoverrun>(2), B<timer_settime>(2), B<timerfd_create>(2), "
8683 "B<clock_getcpuclockid>(3), B<pthread_getcpuclockid>(3), B<pthreads>(7), "
8684 "B<sigevent>(7), B<signal>(7), B<time>(7)"
8685 msgstr ""
8686
8687 #. type: TH
8688 #: build/C/man2/timer_delete.2:23
8689 #, no-wrap
8690 msgid "TIMER_DELETE"
8691 msgstr ""
8692
8693 #. type: TH
8694 #: build/C/man2/timer_delete.2:23 build/C/man2/timer_getoverrun.2:23 build/C/man2/timer_settime.2:23
8695 #, no-wrap
8696 msgid "2009-02-20"
8697 msgstr ""
8698
8699 #. type: Plain text
8700 #: build/C/man2/timer_delete.2:26
8701 msgid "timer_delete - delete a POSIX per-process timer"
8702 msgstr ""
8703
8704 #. type: Plain text
8705 #: build/C/man2/timer_delete.2:29 build/C/man2/timer_getoverrun.2:29 build/C/man2/timer_settime.2:30
8706 #, no-wrap
8707 msgid "B<#include E<lt>time.hE<gt>>\n"
8708 msgstr ""
8709
8710 #. type: Plain text
8711 #: build/C/man2/timer_delete.2:31
8712 #, no-wrap
8713 msgid "B<int timer_delete(timer_t >I<timerid>B<);>\n"
8714 msgstr ""
8715
8716 #. type: Plain text
8717 #: build/C/man2/timer_delete.2:42
8718 msgid "B<timer_delete>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
8719 msgstr ""
8720
8721 #. type: Plain text
8722 #: build/C/man2/timer_delete.2:50
8723 msgid ""
8724 "B<timer_delete>()  deletes the timer whose ID is given in I<timerid>.  If "
8725 "the timer was armed at the time of this call, it is disarmed before being "
8726 "deleted.  The treatment of any pending signal generated by the deleted timer "
8727 "is unspecified."
8728 msgstr ""
8729
8730 #. type: Plain text
8731 #: build/C/man2/timer_delete.2:57
8732 msgid ""
8733 "On success, B<timer_delete>()  returns 0.  On failure, -1 is returned, and "
8734 "I<errno> is set to indicate the error."
8735 msgstr ""
8736
8737 #. type: Plain text
8738 #: build/C/man2/timer_delete.2:62 build/C/man2/timer_getoverrun.2:92
8739 msgid "I<timerid> is not a valid timer ID."
8740 msgstr ""
8741
8742 #. type: Plain text
8743 #: build/C/man2/timer_delete.2:72
8744 msgid ""
8745 "B<clock_gettime>(2), B<timer_create>(2), B<timer_getoverrun>(2), "
8746 "B<timer_settime>(2), B<time>(7)"
8747 msgstr ""
8748
8749 #. type: TH
8750 #: build/C/man2/timer_getoverrun.2:23
8751 #, no-wrap
8752 msgid "TIMER_GETOVERRUN"
8753 msgstr ""
8754
8755 #. type: Plain text
8756 #: build/C/man2/timer_getoverrun.2:26
8757 msgid "timer_getoverrun - get overrun count for a POSIX per-process timer"
8758 msgstr ""
8759
8760 #. type: Plain text
8761 #: build/C/man2/timer_getoverrun.2:31
8762 #, no-wrap
8763 msgid "B<int timer_getoverrun(timer_t >I<timerid>B<);>\n"
8764 msgstr ""
8765
8766 #. type: Plain text
8767 #: build/C/man2/timer_getoverrun.2:42
8768 msgid "B<timer_getoverrun>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
8769 msgstr ""
8770
8771 #. type: Plain text
8772 #: build/C/man2/timer_getoverrun.2:53
8773 msgid ""
8774 "B<timer_getoverrun>()  returns the \"overrun count\" for the timer referred "
8775 "to by I<timerid>.  An application can use the overrun count to accurately "
8776 "calculate the number of timer expirations that would have occurred over a "
8777 "given time interval.  Timer overruns can occur both when receiving "
8778 "expiration notifications via signals (B<SIGEV_SIGNAL>), and via threads "
8779 "(B<SIGEV_THREAD>)."
8780 msgstr ""
8781
8782 #. type: Plain text
8783 #: build/C/man2/timer_getoverrun.2:73
8784 msgid ""
8785 "When expiration notifications are delivered via a signal, overruns can occur "
8786 "as follows.  Regardless of whether or not a real-time signal is used for "
8787 "timer notifications, the system queues at most one signal per timer.  (This "
8788 "is the behavior specified by POSIX.1-2001.  The alternative, queuing one "
8789 "signal for each timer expiration, could easily result in overflowing the "
8790 "allowed limits for queued signals on the system.)  Because of system "
8791 "scheduling delays, or because the signal may be temporarily blocked, there "
8792 "can be a delay between the time when the notification signal is generated "
8793 "and the time when it is delivered (e.g., caught by a signal handler) or "
8794 "accepted (e.g., using B<sigwaitinfo>(2)).  In this interval, further timer "
8795 "expirations may occur.  The timer overrun count is the number of additional "
8796 "timer expirations that occurred between the time when the signal was "
8797 "generated and when it was delivered or accepted."
8798 msgstr ""
8799
8800 #. type: Plain text
8801 #: build/C/man2/timer_getoverrun.2:79
8802 msgid ""
8803 "Timer overruns can also occur when expiration notifications are delivered "
8804 "via invocation of a thread, since there may be an arbitrary delay between an "
8805 "expiration of the timer and the invocation of the notification thread, and "
8806 "in that delay interval, additional timer expirations may occur"
8807 msgstr ""
8808
8809 #. type: Plain text
8810 #: build/C/man2/timer_getoverrun.2:87
8811 msgid ""
8812 "On success, B<timer_getoverrun>()  returns the overrun count of the "
8813 "specified timer; this count may be 0 if no overruns have occurred.  On "
8814 "failure, -1 is returned, and I<errno> is set to indicate the error."
8815 msgstr ""
8816
8817 #. type: Plain text
8818 #: build/C/man2/timer_getoverrun.2:108
8819 msgid ""
8820 "When timer notifications are delivered via signals (B<SIGEV_SIGNAL>), on "
8821 "Linux it is also possible to obtain the overrun count via the I<si_overrun> "
8822 "field of the I<siginfo_t> structure (see B<sigaction>(2)).  This allows an "
8823 "application to avoid the overhead of making a system call to obtain the "
8824 "overrun count, but is a nonportable extension to POSIX.1-2001."
8825 msgstr ""
8826
8827 #.  FIXME . Austin bug filed, 11 Feb 09
8828 #. type: Plain text
8829 #: build/C/man2/timer_getoverrun.2:112
8830 msgid ""
8831 "POSIX.1-2001 only discusses timer overruns in the context of timer "
8832 "notifications using signals."
8833 msgstr ""
8834
8835 #.  Bug filed: http://bugzilla.kernel.org/show_bug.cgi?id=12665
8836 #.  http://thread.gmane.org/gmane.linux.kernel/113276/
8837 #. type: Plain text
8838 #: build/C/man2/timer_getoverrun.2:125
8839 msgid ""
8840 "POSIX.1-2001 specifies that if the timer overrun count is equal to or "
8841 "greater than an implementation-defined maximum, B<DELAYTIMER_MAX>, then "
8842 "B<timer_getoverrun>()  should return B<DELAYTIMER_MAX>.  However, Linux does "
8843 "not implement this feature: instead, if the timer overrun value exceeds the "
8844 "maximum representable integer, the counter cycles, starting once more from "
8845 "low values."
8846 msgstr ""
8847
8848 #. type: Plain text
8849 #: build/C/man2/timer_getoverrun.2:128 build/C/man2/timer_settime.2:208
8850 msgid "See B<timer_create>(2)."
8851 msgstr ""
8852
8853 #. type: Plain text
8854 #: build/C/man2/timer_getoverrun.2:138
8855 msgid ""
8856 "B<clock_gettime>(2), B<sigaction>(2), B<signalfd>(2), B<sigwaitinfo>(2), "
8857 "B<timer_create>(2), B<timer_delete>(2), B<timer_settime>(2), B<signal>(7), "
8858 "B<time>(7)"
8859 msgstr ""
8860
8861 #. type: TH
8862 #: build/C/man2/timer_settime.2:23
8863 #, no-wrap
8864 msgid "TIMER_SETTIME"
8865 msgstr ""
8866
8867 #. type: Plain text
8868 #: build/C/man2/timer_settime.2:27
8869 msgid ""
8870 "timer_settime, timer_gettime - arm/disarm and fetch state of POSIX "
8871 "per-process timer"
8872 msgstr ""
8873
8874 #. type: Plain text
8875 #: build/C/man2/timer_settime.2:35
8876 #, no-wrap
8877 msgid ""
8878 "B<int timer_settime(timer_t >I<timerid>B<, int >I<flags>B<,>\n"
8879 "B<                  const struct itimerspec *>I<new_value>B<,>\n"
8880 "B<                  struct itimerspec * >I<old_value>B<);>\n"
8881 "B<int timer_gettime(timer_t >I<timerid>B<, struct itimerspec "
8882 "*>I<curr_value>B<);>\n"
8883 msgstr ""
8884
8885 #. type: Plain text
8886 #: build/C/man2/timer_settime.2:47
8887 msgid "B<timer_settime>(), B<timer_gettime>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
8888 msgstr ""
8889
8890 #. type: Plain text
8891 #: build/C/man2/timer_settime.2:60
8892 msgid ""
8893 "B<timer_settime>()  arms or disarms the timer identified by I<timerid>.  The "
8894 "I<new_value> argument is an I<itimerspec> structure that specifies the new "
8895 "initial value and the new interval for the timer.  The I<itimerspec> "
8896 "structure is defined as follows:"
8897 msgstr ""
8898
8899 #. type: Plain text
8900 #: build/C/man2/timer_settime.2:67 build/C/man2/timerfd_create.2:127
8901 #, no-wrap
8902 msgid ""
8903 "struct timespec {\n"
8904 "    time_t tv_sec;                /* Seconds */\n"
8905 "    long   tv_nsec;               /* Nanoseconds */\n"
8906 "};\n"
8907 msgstr ""
8908
8909 #. type: Plain text
8910 #: build/C/man2/timer_settime.2:72
8911 #, no-wrap
8912 msgid ""
8913 "struct itimerspec {\n"
8914 "    struct timespec it_interval;  /* Timer interval */\n"
8915 "    struct timespec it_value;     /* Initial expiration */\n"
8916 "};\n"
8917 msgstr ""
8918
8919 #. type: Plain text
8920 #: build/C/man2/timer_settime.2:84
8921 msgid ""
8922 "Each of the substructures of the I<itimerspec> structure is a I<timespec> "
8923 "structure that allows a time value to be specified in seconds and "
8924 "nanoseconds.  These time values are measured according to the clock that was "
8925 "specified when the timer was created by B<timer_create>(2)"
8926 msgstr ""
8927
8928 #. type: Plain text
8929 #: build/C/man2/timer_settime.2:98
8930 msgid ""
8931 "If I<new_value-E<gt>it_value> specifies a nonzero value (i.e., either "
8932 "subfield is nonzero), then B<timer_settime>()  arms (starts) the timer, "
8933 "setting it to initially expire at the given time.  (If the timer was already "
8934 "armed, then the previous settings are overwritten.)  If "
8935 "I<new_value-E<gt>it_value> specifies a zero value (i.e., both subfields are "
8936 "zero), then the timer is disarmed."
8937 msgstr ""
8938
8939 #. type: Plain text
8940 #: build/C/man2/timer_settime.2:110
8941 msgid ""
8942 "The I<new_value-E<gt>it_interval> field specifies the period of the timer, "
8943 "in seconds and nanoseconds.  If this field is nonzero, then each time that "
8944 "an armed timer expires, the timer is reloaded from the value specified in "
8945 "I<new_value-E<gt>it_interval>.  If I<new_value-E<gt>it_interval> specifies a "
8946 "zero value then the timer expires just once, at the time specified by "
8947 "I<it_value>."
8948 msgstr ""
8949
8950 #.  By experiment: the overrun count is set correctly, for CLOCK_REALTIME.
8951 #. type: Plain text
8952 #: build/C/man2/timer_settime.2:131
8953 msgid ""
8954 "By default, the initial expiration time specified in "
8955 "I<new_value-E<gt>it_value> is interpreted relative to the current time on "
8956 "the timer's clock at the time of the call.  This can be modified by "
8957 "specifying B<TIMER_ABSTIME> in I<flags>, in which case "
8958 "I<new_value-E<gt>it_value> is interpreted as an absolute value as measured "
8959 "on the timer's clock; that is, the timer will expire when the clock value "
8960 "reaches the value specified by I<new_value-E<gt>it_value>.  If the specified "
8961 "absolute time has already passed, then the timer expires immediately, and "
8962 "the overrun count (see B<timer_getoverrun>(2))  will be set correctly."
8963 msgstr ""
8964
8965 #.  Similar remarks might apply with respect to process and thread CPU time
8966 #.  clocks, but these clocks are not currently (2.6.28) settable on Linux.
8967 #. type: Plain text
8968 #: build/C/man2/timer_settime.2:141
8969 msgid ""
8970 "If the value of the B<CLOCK_REALTIME> clock is adjusted while an absolute "
8971 "timer based on that clock is armed, then the expiration of the timer will be "
8972 "appropriately adjusted.  Adjustments to the B<CLOCK_REALTIME> clock have no "
8973 "effect on relative timers based on that clock."
8974 msgstr ""
8975
8976 #. type: Plain text
8977 #: build/C/man2/timer_settime.2:149
8978 msgid ""
8979 "If I<old_value> is not NULL, then it returns the previous interval of the "
8980 "timer (in I<old_value-E<gt>it_interval>)  and the amount of time until the "
8981 "timer would previously have next expired (in I<old_value-E<gt>it_value>)."
8982 msgstr ""
8983
8984 #. type: Plain text
8985 #: build/C/man2/timer_settime.2:169
8986 msgid ""
8987 "B<timer_gettime>()  returns the time until next expiration, and the "
8988 "interval, for the timer specified by I<timerid>, in the buffer pointed to by "
8989 "I<curr_value>.  The time remaining until the next timer expiration is "
8990 "returned in I<curr_value-E<gt>it_value>; this is always a relative value, "
8991 "regardless of whether the B<TIMER_ABSTIME> flag was used when arming the "
8992 "timer.  If the value returned in I<curr_value-E<gt>it_value> is zero, then "
8993 "the timer is currently disarmed.  The timer interval is returned in "
8994 "I<curr_value-E<gt>it_interval>.  If the value returned in "
8995 "I<curr_value-E<gt>it_interval> is zero, then this is a \"one-shot\" timer."
8996 msgstr ""
8997
8998 #. type: Plain text
8999 #: build/C/man2/timer_settime.2:178
9000 msgid ""
9001 "On success, B<timer_settime>()  and B<timer_gettime>()  return 0.  On error, "
9002 "-1 is returned, and I<errno> is set to indicate the error."
9003 msgstr ""
9004
9005 #. type: Plain text
9006 #: build/C/man2/timer_settime.2:180
9007 msgid "These functions may fail with the following errors:"
9008 msgstr ""
9009
9010 #. type: Plain text
9011 #: build/C/man2/timer_settime.2:187
9012 msgid "I<new_value>, I<old_value>, or I<curr_value> is not a valid pointer."
9013 msgstr ""
9014
9015 #.  FIXME . eventually: invalid value in flags
9016 #. type: Plain text
9017 #: build/C/man2/timer_settime.2:192
9018 msgid "I<timerid> is invalid."
9019 msgstr ""
9020
9021 #. type: Plain text
9022 #: build/C/man2/timer_settime.2:195
9023 msgid "B<timer_settime>()  may fail with the following errors:"
9024 msgstr ""
9025
9026 #. type: Plain text
9027 #: build/C/man2/timer_settime.2:201
9028 msgid ""
9029 "I<new_value.it_value> is negative; or I<new_value.it_value.tv_nsec> is "
9030 "negative or greater than 999,999,999."
9031 msgstr ""
9032
9033 #. type: Plain text
9034 #: build/C/man2/timer_settime.2:203
9035 msgid "These system calls are available since Linux 2.6."
9036 msgstr ""
9037
9038 #. type: Plain text
9039 #: build/C/man2/timer_settime.2:212
9040 msgid "B<timer_create>(2), B<timer_getoverrun>(2), B<time>(7)"
9041 msgstr ""
9042
9043 #. type: TH
9044 #: build/C/man2/timerfd_create.2:20
9045 #, no-wrap
9046 msgid "TIMERFD_CREATE"
9047 msgstr ""
9048
9049 #. type: TH
9050 #: build/C/man2/timerfd_create.2:20
9051 #, no-wrap
9052 msgid "2011-09-14"
9053 msgstr ""
9054
9055 #. type: Plain text
9056 #: build/C/man2/timerfd_create.2:24
9057 msgid ""
9058 "timerfd_create, timerfd_settime, timerfd_gettime - timers that notify via "
9059 "file descriptors"
9060 msgstr ""
9061
9062 #. type: Plain text
9063 #: build/C/man2/timerfd_create.2:27
9064 #, no-wrap
9065 msgid "B<#include E<lt>sys/timerfd.hE<gt>>\n"
9066 msgstr ""
9067
9068 #. type: Plain text
9069 #: build/C/man2/timerfd_create.2:29
9070 #, no-wrap
9071 msgid "B<int timerfd_create(int >I<clockid>B<, int >I<flags>B<);>\n"
9072 msgstr ""
9073
9074 #. type: Plain text
9075 #: build/C/man2/timerfd_create.2:33
9076 #, no-wrap
9077 msgid ""
9078 "B<int timerfd_settime(int >I<fd>B<, int >I<flags>B<,>\n"
9079 "B<                    const struct itimerspec *>I<new_value>B<,>\n"
9080 "B<                    struct itimerspec *>I<old_value>B<);>\n"
9081 msgstr ""
9082
9083 #. type: Plain text
9084 #: build/C/man2/timerfd_create.2:35
9085 #, no-wrap
9086 msgid "B<int timerfd_gettime(int >I<fd>B<, struct itimerspec *>I<curr_value>B<);>\n"
9087 msgstr ""
9088
9089 #. type: Plain text
9090 #: build/C/man2/timerfd_create.2:48
9091 msgid ""
9092 "These system calls create and operate on a timer that delivers timer "
9093 "expiration notifications via a file descriptor.  They provide an alternative "
9094 "to the use of B<setitimer>(2)  or B<timer_create>(2), with the advantage "
9095 "that the file descriptor may be monitored by B<select>(2), B<poll>(2), and "
9096 "B<epoll>(7)."
9097 msgstr ""
9098
9099 #. type: Plain text
9100 #: build/C/man2/timerfd_create.2:60
9101 msgid ""
9102 "The use of these three system calls is analogous to the use of "
9103 "B<timer_create>(2), B<timer_settime>(2), and B<timer_gettime>(2).  (There is "
9104 "no analog of B<timer_getoverrun>(2), since that functionality is provided by "
9105 "B<read>(2), as described below.)"
9106 msgstr ""
9107
9108 #. type: SS
9109 #: build/C/man2/timerfd_create.2:60
9110 #, no-wrap
9111 msgid "timerfd_create()"
9112 msgstr ""
9113
9114 #. type: Plain text
9115 #: build/C/man2/timerfd_create.2:79
9116 msgid ""
9117 "B<timerfd_create>()  creates a new timer object, and returns a file "
9118 "descriptor that refers to that timer.  The I<clockid> argument specifies the "
9119 "clock that is used to mark the progress of the timer, and must be either "
9120 "B<CLOCK_REALTIME> or B<CLOCK_MONOTONIC>.  B<CLOCK_REALTIME> is a settable "
9121 "system-wide clock.  B<CLOCK_MONOTONIC> is a nonsettable clock that is not "
9122 "affected by discontinuous changes in the system clock (e.g., manual changes "
9123 "to system time).  The current value of each of these clocks can be retrieved "
9124 "using B<clock_gettime>(2)."
9125 msgstr ""
9126
9127 #. type: Plain text
9128 #: build/C/man2/timerfd_create.2:84
9129 msgid ""
9130 "Starting with Linux 2.6.27, the following values may be bitwise ORed in "
9131 "I<flags> to change the behavior of B<timerfd_create>():"
9132 msgstr ""
9133
9134 #. type: TP
9135 #: build/C/man2/timerfd_create.2:84
9136 #, no-wrap
9137 msgid "B<TFD_NONBLOCK>"
9138 msgstr ""
9139
9140 #. type: TP
9141 #: build/C/man2/timerfd_create.2:92
9142 #, no-wrap
9143 msgid "B<TFD_CLOEXEC>"
9144 msgstr ""
9145
9146 #. type: Plain text
9147 #: build/C/man2/timerfd_create.2:106
9148 msgid ""
9149 "In Linux versions up to and including 2.6.26, I<flags> must be specified as "
9150 "zero."
9151 msgstr ""
9152
9153 #. type: SS
9154 #: build/C/man2/timerfd_create.2:106
9155 #, no-wrap
9156 msgid "timerfd_settime()"
9157 msgstr ""
9158
9159 #. type: Plain text
9160 #: build/C/man2/timerfd_create.2:111
9161 msgid ""
9162 "B<timerfd_settime>()  arms (starts) or disarms (stops)  the timer referred "
9163 "to by the file descriptor I<fd>."
9164 msgstr ""
9165
9166 #. type: Plain text
9167 #: build/C/man2/timerfd_create.2:120
9168 msgid ""
9169 "The I<new_value> argument specifies the initial expiration and interval for "
9170 "the timer.  The I<itimer> structure used for this argument contains two "
9171 "fields, each of which is in turn a structure of type I<timespec>:"
9172 msgstr ""
9173
9174 #. type: Plain text
9175 #: build/C/man2/timerfd_create.2:132
9176 #, no-wrap
9177 msgid ""
9178 "struct itimerspec {\n"
9179 "    struct timespec it_interval;  /* Interval for periodic timer */\n"
9180 "    struct timespec it_value;     /* Initial expiration */\n"
9181 "};\n"
9182 msgstr ""
9183
9184 #. type: Plain text
9185 #: build/C/man2/timerfd_create.2:144
9186 msgid ""
9187 "I<new_value.it_value> specifies the initial expiration of the timer, in "
9188 "seconds and nanoseconds.  Setting either field of I<new_value.it_value> to a "
9189 "nonzero value arms the timer.  Setting both fields of I<new_value.it_value> "
9190 "to zero disarms the timer."
9191 msgstr ""
9192
9193 #. type: Plain text
9194 #: build/C/man2/timerfd_create.2:153
9195 msgid ""
9196 "Setting one or both fields of I<new_value.it_interval> to nonzero values "
9197 "specifies the period, in seconds and nanoseconds, for repeated timer "
9198 "expirations after the initial expiration.  If both fields of "
9199 "I<new_value.it_interval> are zero, the timer expires just once, at the time "
9200 "specified by I<new_value.it_value>."
9201 msgstr ""
9202
9203 #. type: Plain text
9204 #: build/C/man2/timerfd_create.2:169
9205 msgid ""
9206 "The I<flags> argument is either 0, to start a relative timer "
9207 "(I<new_value.it_value> specifies a time relative to the current value of the "
9208 "clock specified by I<clockid>), or B<TFD_TIMER_ABSTIME>, to start an "
9209 "absolute timer (I<new_value.it_value> specifies an absolute time for the "
9210 "clock specified by I<clockid>; that is, the timer will expire when the value "
9211 "of that clock reaches the value specified in I<new_value.it_value>)."
9212 msgstr ""
9213
9214 #. type: Plain text
9215 #: build/C/man2/timerfd_create.2:180
9216 msgid ""
9217 "If the I<old_value> argument is not NULL, then the I<itimerspec> structure "
9218 "that it points to is used to return the setting of the timer that was "
9219 "current at the time of the call; see the description of B<timerfd_gettime>()  "
9220 "following."
9221 msgstr ""
9222
9223 #. type: SS
9224 #: build/C/man2/timerfd_create.2:180
9225 #, no-wrap
9226 msgid "timerfd_gettime()"
9227 msgstr ""
9228
9229 #. type: Plain text
9230 #: build/C/man2/timerfd_create.2:189
9231 msgid ""
9232 "B<timerfd_gettime>()  returns, in I<curr_value>, an I<itimerspec> structure "
9233 "that contains the current setting of the timer referred to by the file "
9234 "descriptor I<fd>."
9235 msgstr ""
9236
9237 #. type: Plain text
9238 #: build/C/man2/timerfd_create.2:199
9239 msgid ""
9240 "The I<it_value> field returns the amount of time until the timer will next "
9241 "expire.  If both fields of this structure are zero, then the timer is "
9242 "currently disarmed.  This field always contains a relative value, regardless "
9243 "of whether the B<TFD_TIMER_ABSTIME> flag was specified when setting the "
9244 "timer."
9245 msgstr ""
9246
9247 #. type: Plain text
9248 #: build/C/man2/timerfd_create.2:206
9249 msgid ""
9250 "The I<it_interval> field returns the interval of the timer.  If both fields "
9251 "of this structure are zero, then the timer is set to expire just once, at "
9252 "the time specified by I<curr_value.it_value>."
9253 msgstr ""
9254
9255 #. type: SS
9256 #: build/C/man2/timerfd_create.2:206
9257 #, no-wrap
9258 msgid "Operating on a timer file descriptor"
9259 msgstr ""
9260
9261 #. type: Plain text
9262 #: build/C/man2/timerfd_create.2:210
9263 msgid ""
9264 "The file descriptor returned by B<timerfd_create>()  supports the following "
9265 "operations:"
9266 msgstr ""
9267
9268 #. type: Plain text
9269 #: build/C/man2/timerfd_create.2:224
9270 msgid ""
9271 "If the timer has already expired one or more times since its settings were "
9272 "last modified using B<timerfd_settime>(), or since the last successful "
9273 "B<read>(2), then the buffer given to B<read>(2)  returns an unsigned 8-byte "
9274 "integer (I<uint64_t>)  containing the number of expirations that have "
9275 "occurred.  (The returned value is in host byte order, i.e., the native byte "
9276 "order for integers on the host machine.)"
9277 msgstr ""
9278
9279 #. type: Plain text
9280 #: build/C/man2/timerfd_create.2:237
9281 msgid ""
9282 "If no timer expirations have occurred at the time of the B<read>(2), then "
9283 "the call either blocks until the next timer expiration, or fails with the "
9284 "error B<EAGAIN> if the file descriptor has been made nonblocking (via the "
9285 "use of the B<fcntl>(2)  B<F_SETFL> operation to set the B<O_NONBLOCK> flag)."
9286 msgstr ""
9287
9288 #. type: Plain text
9289 #: build/C/man2/timerfd_create.2:243
9290 msgid ""
9291 "A B<read>(2)  will fail with the error B<EINVAL> if the size of the supplied "
9292 "buffer is less than 8 bytes."
9293 msgstr ""
9294
9295 #. type: Plain text
9296 #: build/C/man2/timerfd_create.2:254
9297 msgid ""
9298 "The file descriptor is readable (the B<select>(2)  I<readfds> argument; the "
9299 "B<poll>(2)  B<POLLIN> flag)  if one or more timer expirations have occurred."
9300 msgstr ""
9301
9302 #. type: Plain text
9303 #: build/C/man2/timerfd_create.2:261
9304 msgid ""
9305 "The file descriptor also supports the other file-descriptor multiplexing "
9306 "APIs: B<pselect>(2), B<ppoll>(2), and B<epoll>(7)."
9307 msgstr ""
9308
9309 #. type: Plain text
9310 #: build/C/man2/timerfd_create.2:268
9311 msgid ""
9312 "When the file descriptor is no longer required it should be closed.  When "
9313 "all file descriptors associated with the same timer object have been closed, "
9314 "the timer is disarmed and its resources are freed by the kernel."
9315 msgstr ""
9316
9317 #. type: Plain text
9318 #: build/C/man2/timerfd_create.2:280
9319 msgid ""
9320 "After a B<fork>(2), the child inherits a copy of the file descriptor created "
9321 "by B<timerfd_create>().  The file descriptor refers to the same underlying "
9322 "timer object as the corresponding file descriptor in the parent, and "
9323 "B<read>(2)s in the child will return information about expirations of the "
9324 "timer."
9325 msgstr ""
9326
9327 #. type: Plain text
9328 #: build/C/man2/timerfd_create.2:286
9329 msgid ""
9330 "A file descriptor created by B<timerfd_create>()  is preserved across "
9331 "B<execve>(2), and continues to generate timer expirations if the timer was "
9332 "armed."
9333 msgstr ""
9334
9335 #. type: Plain text
9336 #: build/C/man2/timerfd_create.2:293
9337 msgid ""
9338 "On success, B<timerfd_create>()  returns a new file descriptor.  On error, "
9339 "-1 is returned and I<errno> is set to indicate the error."
9340 msgstr ""
9341
9342 #. type: Plain text
9343 #: build/C/man2/timerfd_create.2:301
9344 msgid ""
9345 "B<timerfd_settime>()  and B<timerfd_gettime>()  return 0 on success; on "
9346 "error they return -1, and set I<errno> to indicate the error."
9347 msgstr ""
9348
9349 #. type: Plain text
9350 #: build/C/man2/timerfd_create.2:304
9351 msgid "B<timerfd_create>()  can fail with the following errors:"
9352 msgstr ""
9353
9354 #. type: Plain text
9355 #: build/C/man2/timerfd_create.2:312
9356 msgid "The I<clockid> argument is neither B<CLOCK_MONOTONIC> nor B<CLOCK_REALTIME>;"
9357 msgstr ""
9358
9359 #. type: Plain text
9360 #: build/C/man2/timerfd_create.2:332
9361 msgid "There was insufficient kernel memory to create the timer."
9362 msgstr ""
9363
9364 #. type: Plain text
9365 #: build/C/man2/timerfd_create.2:337
9366 msgid ""
9367 "B<timerfd_settime>()  and B<timerfd_gettime>()  can fail with the following "
9368 "errors:"
9369 msgstr ""
9370
9371 #. type: Plain text
9372 #: build/C/man2/timerfd_create.2:341
9373 msgid "I<fd> is not a valid file descriptor."
9374 msgstr ""
9375
9376 #. type: Plain text
9377 #: build/C/man2/timerfd_create.2:352
9378 msgid "I<fd> is not a valid timerfd file descriptor."
9379 msgstr ""
9380
9381 #. type: Plain text
9382 #: build/C/man2/timerfd_create.2:355
9383 msgid "B<timerfd_settime>()  can also fail with the following errors:"
9384 msgstr ""
9385
9386 #. type: Plain text
9387 #: build/C/man2/timerfd_create.2:361
9388 msgid ""
9389 "I<new_value> is not properly initialized (one of the I<tv_nsec> falls "
9390 "outside the range zero to 999,999,999)."
9391 msgstr ""
9392
9393 #.  This case only checked since 2.6.29, and 2.2.2[78].some-stable-version.
9394 #.  In older kernel versions, no check was made for invalid flags.
9395 #. type: Plain text
9396 #: build/C/man2/timerfd_create.2:367
9397 msgid "I<flags> is invalid."
9398 msgstr ""
9399
9400 #. type: Plain text
9401 #: build/C/man2/timerfd_create.2:370
9402 msgid ""
9403 "These system calls are available on Linux since kernel 2.6.25.  Library "
9404 "support is provided by glibc since version 2.8."
9405 msgstr ""
9406
9407 #. type: Plain text
9408 #: build/C/man2/timerfd_create.2:381
9409 msgid ""
9410 "The following program creates a timer and then monitors its progress.  The "
9411 "program accepts up to three command-line arguments.  The first argument "
9412 "specifies the number of seconds for the initial expiration of the timer.  "
9413 "The second argument specifies the interval for the timer, in seconds.  The "
9414 "third argument specifies the number of times the program should allow the "
9415 "timer to expire before terminating.  The second and third command-line "
9416 "arguments are optional."
9417 msgstr ""
9418
9419 #. type: Plain text
9420 #: build/C/man2/timerfd_create.2:383 build/C/man2/wait.2:541
9421 msgid "The following shell session demonstrates the use of the program:"
9422 msgstr ""
9423
9424 #. type: Plain text
9425 #: build/C/man2/timerfd_create.2:398
9426 #, no-wrap
9427 msgid ""
9428 "$B< a.out 3 1 100>\n"
9429 "0.000: timer started\n"
9430 "3.000: read: 1; total=1\n"
9431 "4.000: read: 1; total=2\n"
9432 "B<^Z >                 # type control-Z to suspend the program\n"
9433 "[1]+  Stopped                 ./timerfd3_demo 3 1 100\n"
9434 "$ B<fg>                # Resume execution after a few seconds\n"
9435 "a.out 3 1 100\n"
9436 "9.660: read: 5; total=7\n"
9437 "10.000: read: 1; total=8\n"
9438 "11.000: read: 1; total=9\n"
9439 "B<^C >                 # type control-C to suspend the program\n"
9440 msgstr ""
9441
9442 #.  The commented out code here is what we currently need until
9443 #.  the required stuff is in glibc
9444 #
9445 #
9446 #. /* Link with -lrt */
9447 #. #define _GNU_SOURCE
9448 #. #include <sys/syscall.h>
9449 #. #include <unistd.h>
9450 #. #include <time.h>
9451 #. #if defined(__i386__)
9452 #. #define __NR_timerfd_create 322
9453 #. #define __NR_timerfd_settime 325
9454 #. #define __NR_timerfd_gettime 326
9455 #. #endif
9456 #
9457 #. static int
9458 #. timerfd_create(int clockid, int flags)
9459 #. {
9460 #.     return syscall(__NR_timerfd_create, clockid, flags);
9461 #. }
9462 #
9463 #. static int
9464 #. timerfd_settime(int fd, int flags, struct itimerspec *new_value,
9465 #.         struct itimerspec *curr_value)
9466 #. {
9467 #.     return syscall(__NR_timerfd_settime, fd, flags, new_value,
9468 #.                    curr_value);
9469 #. }
9470 #
9471 #. static int
9472 #. timerfd_gettime(int fd, struct itimerspec *curr_value)
9473 #. {
9474 #.     return syscall(__NR_timerfd_gettime, fd, curr_value);
9475 #. }
9476 #
9477 #. #define TFD_TIMER_ABSTIME (1 << 0)
9478 #
9479 #. ////////////////////////////////////////////////////////////
9480 #. type: Plain text
9481 #: build/C/man2/timerfd_create.2:447
9482 #, no-wrap
9483 msgid ""
9484 "#include E<lt>sys/timerfd.hE<gt>\n"
9485 "#include E<lt>time.hE<gt>\n"
9486 "#include E<lt>unistd.hE<gt>\n"
9487 "#include E<lt>stdlib.hE<gt>\n"
9488 "#include E<lt>stdio.hE<gt>\n"
9489 "#include E<lt>stdint.hE<gt>        /* Definition of uint64_t */\n"
9490 msgstr ""
9491
9492 #. type: Plain text
9493 #: build/C/man2/timerfd_create.2:450
9494 #, no-wrap
9495 msgid ""
9496 "#define handle_error(msg) \\e\n"
9497 "        do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
9498 msgstr ""
9499
9500 #. type: Plain text
9501 #: build/C/man2/timerfd_create.2:458
9502 #, no-wrap
9503 msgid ""
9504 "static void\n"
9505 "print_elapsed_time(void)\n"
9506 "{\n"
9507 "    static struct timespec start;\n"
9508 "    struct timespec curr;\n"
9509 "    static int first_call = 1;\n"
9510 "    int secs, nsecs;\n"
9511 msgstr ""
9512
9513 #. type: Plain text
9514 #: build/C/man2/timerfd_create.2:464
9515 #, no-wrap
9516 msgid ""
9517 "    if (first_call) {\n"
9518 "        first_call = 0;\n"
9519 "        if (clock_gettime(CLOCK_MONOTONIC, &start) == -1)\n"
9520 "            handle_error(\"clock_gettime\");\n"
9521 "    }\n"
9522 msgstr ""
9523
9524 #. type: Plain text
9525 #: build/C/man2/timerfd_create.2:467
9526 #, no-wrap
9527 msgid ""
9528 "    if (clock_gettime(CLOCK_MONOTONIC, &curr) == -1)\n"
9529 "        handle_error(\"clock_gettime\");\n"
9530 msgstr ""
9531
9532 #. type: Plain text
9533 #: build/C/man2/timerfd_create.2:476
9534 #, no-wrap
9535 msgid ""
9536 "    secs = curr.tv_sec - start.tv_sec;\n"
9537 "    nsecs = curr.tv_nsec - start.tv_nsec;\n"
9538 "    if (nsecs E<lt> 0) {\n"
9539 "        secs--;\n"
9540 "        nsecs += 1000000000;\n"
9541 "    }\n"
9542 "    printf(\"%d.%03d: \", secs, (nsecs + 500000) / 1000000);\n"
9543 "}\n"
9544 msgstr ""
9545
9546 #. type: Plain text
9547 #: build/C/man2/timerfd_create.2:485
9548 #, no-wrap
9549 msgid ""
9550 "int\n"
9551 "main(int argc, char *argv[])\n"
9552 "{\n"
9553 "    struct itimerspec new_value;\n"
9554 "    int max_exp, fd;\n"
9555 "    struct timespec now;\n"
9556 "    uint64_t exp, tot_exp;\n"
9557 "    ssize_t s;\n"
9558 msgstr ""
9559
9560 #. type: Plain text
9561 #: build/C/man2/timerfd_create.2:491
9562 #, no-wrap
9563 msgid ""
9564 "    if ((argc != 2) && (argc != 4)) {\n"
9565 "        fprintf(stderr, \"%s init-secs [interval-secs max-exp]\\en\",\n"
9566 "                argv[0]);\n"
9567 "        exit(EXIT_FAILURE);\n"
9568 "    }\n"
9569 msgstr ""
9570
9571 #. type: Plain text
9572 #: build/C/man2/timerfd_create.2:494
9573 #, no-wrap
9574 msgid ""
9575 "    if (clock_gettime(CLOCK_REALTIME, &now) == -1)\n"
9576 "        handle_error(\"clock_gettime\");\n"
9577 msgstr ""
9578
9579 #. type: Plain text
9580 #: build/C/man2/timerfd_create.2:497
9581 #, no-wrap
9582 msgid ""
9583 "    /* Create a CLOCK_REALTIME absolute timer with initial\n"
9584 "       expiration and interval as specified in command line */\n"
9585 msgstr ""
9586
9587 #. type: Plain text
9588 #: build/C/man2/timerfd_create.2:508
9589 #, no-wrap
9590 msgid ""
9591 "    new_value.it_value.tv_sec = now.tv_sec + atoi(argv[1]);\n"
9592 "    new_value.it_value.tv_nsec = now.tv_nsec;\n"
9593 "    if (argc == 2) {\n"
9594 "        new_value.it_interval.tv_sec = 0;\n"
9595 "        max_exp = 1;\n"
9596 "    } else {\n"
9597 "        new_value.it_interval.tv_sec = atoi(argv[2]);\n"
9598 "        max_exp = atoi(argv[3]);\n"
9599 "    }\n"
9600 "    new_value.it_interval.tv_nsec = 0;\n"
9601 msgstr ""
9602
9603 #. type: Plain text
9604 #: build/C/man2/timerfd_create.2:512
9605 #, no-wrap
9606 msgid ""
9607 "    fd = timerfd_create(CLOCK_REALTIME, 0);\n"
9608 "    if (fd == -1)\n"
9609 "        handle_error(\"timerfd_create\");\n"
9610 msgstr ""
9611
9612 #. type: Plain text
9613 #: build/C/man2/timerfd_create.2:515
9614 #, no-wrap
9615 msgid ""
9616 "    if (timerfd_settime(fd, TFD_TIMER_ABSTIME, &new_value, NULL) == -1)\n"
9617 "        handle_error(\"timerfd_settime\");\n"
9618 msgstr ""
9619
9620 #. type: Plain text
9621 #: build/C/man2/timerfd_create.2:518
9622 #, no-wrap
9623 msgid ""
9624 "    print_elapsed_time();\n"
9625 "    printf(\"timer started\\en\");\n"
9626 msgstr ""
9627
9628 #. type: Plain text
9629 #: build/C/man2/timerfd_create.2:523
9630 #, no-wrap
9631 msgid ""
9632 "    for (tot_exp = 0; tot_exp E<lt> max_exp;) {\n"
9633 "        s = read(fd, &exp, sizeof(uint64_t));\n"
9634 "        if (s != sizeof(uint64_t))\n"
9635 "            handle_error(\"read\");\n"
9636 msgstr ""
9637
9638 #. type: Plain text
9639 #: build/C/man2/timerfd_create.2:530
9640 #, no-wrap
9641 msgid ""
9642 "        tot_exp += exp;\n"
9643 "        print_elapsed_time();\n"
9644 "        printf(\"read: %llu; total=%llu\\en\",\n"
9645 "                (unsigned long long) exp,\n"
9646 "                (unsigned long long) tot_exp);\n"
9647 "    }\n"
9648 msgstr ""
9649
9650 #.  2.6.29
9651 #. type: Plain text
9652 #: build/C/man2/timerfd_create.2:540
9653 msgid ""
9654 "Currently, B<timerfd_create>()  supports fewer types of clock IDs than "
9655 "B<timer_create>(2)."
9656 msgstr ""
9657
9658 #. type: Plain text
9659 #: build/C/man2/timerfd_create.2:552
9660 msgid ""
9661 "B<eventfd>(2), B<poll>(2), B<read>(2), B<select>(2), B<setitimer>(2), "
9662 "B<signalfd>(2), B<timer_create>(2), B<timer_gettime>(2), "
9663 "B<timer_settime>(2), B<epoll>(7), B<time>(7)"
9664 msgstr ""
9665
9666 #. type: TH
9667 #: build/C/man2/tkill.2:29
9668 #, no-wrap
9669 msgid "TKILL"
9670 msgstr ""
9671
9672 #. type: Plain text
9673 #: build/C/man2/tkill.2:32
9674 msgid "tkill, tgkill - send a signal to a thread"
9675 msgstr ""
9676
9677 #. type: Plain text
9678 #: build/C/man2/tkill.2:35
9679 #, no-wrap
9680 msgid "B<int tkill(int >I<tid>B<, int >I<sig>B<);>\n"
9681 msgstr ""
9682
9683 #. type: Plain text
9684 #: build/C/man2/tkill.2:37
9685 #, no-wrap
9686 msgid "B<int tgkill(int >I<tgid>B<, int >I<tid>B<, int >I<sig>B<);>\n"
9687 msgstr ""
9688
9689 #. type: Plain text
9690 #: build/C/man2/tkill.2:51
9691 msgid ""
9692 "B<tgkill>()  sends the signal I<sig> to the thread with the thread ID I<tid> "
9693 "in the thread group I<tgid>.  (By contrast, B<kill>(2)  can only be used to "
9694 "send a signal to a process (i.e., thread group)  as a whole, and the signal "
9695 "will be delivered to an arbitrary thread within that process.)"
9696 msgstr ""
9697
9698 #. type: Plain text
9699 #: build/C/man2/tkill.2:59
9700 msgid ""
9701 "B<tkill>()  is an obsolete predecessor to B<tgkill>().  It only allows the "
9702 "target thread ID to be specified, which may result in the wrong thread being "
9703 "signaled if a thread terminates and its thread ID is recycled.  Avoid using "
9704 "this system call."
9705 msgstr ""
9706
9707 #. type: Plain text
9708 #: build/C/man2/tkill.2:66
9709 msgid "If I<tgid> is specified as -1, B<tgkill>()  is equivalent to B<tkill>()."
9710 msgstr ""
9711
9712 #. type: Plain text
9713 #: build/C/man2/tkill.2:69
9714 msgid ""
9715 "These are the raw system call interfaces, meant for internal thread library "
9716 "use."
9717 msgstr ""
9718
9719 #. type: Plain text
9720 #: build/C/man2/tkill.2:77
9721 msgid "An invalid thread ID, thread group ID, or signal was specified."
9722 msgstr ""
9723
9724 #. type: Plain text
9725 #: build/C/man2/tkill.2:82
9726 msgid "Permission denied.  For the required permissions, see B<kill>(2)."
9727 msgstr ""
9728
9729 #. type: Plain text
9730 #: build/C/man2/tkill.2:85
9731 msgid "No process with the specified thread ID (and thread group ID) exists."
9732 msgstr ""
9733
9734 #. type: Plain text
9735 #: build/C/man2/tkill.2:90
9736 msgid ""
9737 "B<tkill>()  is supported since Linux 2.4.19 / 2.5.4.  B<tgkill>()  was added "
9738 "in Linux 2.5.75."
9739 msgstr ""
9740
9741 #. type: Plain text
9742 #: build/C/man2/tkill.2:96
9743 msgid ""
9744 "B<tkill>()  and B<tgkill>()  are Linux-specific and should not be used in "
9745 "programs that are intended to be portable."
9746 msgstr ""
9747
9748 #. type: Plain text
9749 #: build/C/man2/tkill.2:102
9750 msgid ""
9751 "See the description of B<CLONE_THREAD> in B<clone>(2)  for an explanation of "
9752 "thread groups."
9753 msgstr ""
9754
9755 #. type: Plain text
9756 #: build/C/man2/tkill.2:105
9757 msgid ""
9758 "Glibc does not provide wrappers for these system calls; call them using "
9759 "B<syscall>(2)."
9760 msgstr ""
9761
9762 #. type: Plain text
9763 #: build/C/man2/tkill.2:110
9764 msgid "B<clone>(2), B<gettid>(2), B<kill>(2), B<rt_sigqueueinfo>(2)"
9765 msgstr ""
9766
9767 #. type: TH
9768 #: build/C/man2/wait.2:50
9769 #, no-wrap
9770 msgid "WAIT"
9771 msgstr ""
9772
9773 #. type: Plain text
9774 #: build/C/man2/wait.2:53
9775 msgid "wait, waitpid, waitid - wait for process to change state"
9776 msgstr ""
9777
9778 #. type: Plain text
9779 #: build/C/man2/wait.2:55
9780 msgid "B<#include E<lt>sys/types.hE<gt>>"
9781 msgstr ""
9782
9783 #. type: Plain text
9784 #: build/C/man2/wait.2:57
9785 msgid "B<#include E<lt>sys/wait.hE<gt>>"
9786 msgstr ""
9787
9788 #. type: Plain text
9789 #: build/C/man2/wait.2:59
9790 msgid "B<pid_t wait(int *>I<status>B<);>"
9791 msgstr ""
9792
9793 #. type: Plain text
9794 #: build/C/man2/wait.2:61
9795 msgid "B<pid_t waitpid(pid_t >I<pid>B<, int *>I<status>B<, int >I<options>B<);>"
9796 msgstr ""
9797
9798 #. type: Plain text
9799 #: build/C/man2/wait.2:64
9800 msgid ""
9801 "B<int waitid(idtype_t >I<idtype>B<, id_t >I<id>B<, siginfo_t *>I<infop>B<, "
9802 "int >I<options>B<);>"
9803 msgstr ""
9804
9805 #. type: Plain text
9806 #: build/C/man2/wait.2:73
9807 msgid "B<waitid>():"
9808 msgstr ""
9809
9810 #. type: Plain text
9811 #: build/C/man2/wait.2:77
9812 msgid ""
9813 "_SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
9814 "_XOPEN_SOURCE_EXTENDED"
9815 msgstr ""
9816
9817 #. type: Plain text
9818 #: build/C/man2/wait.2:92
9819 msgid ""
9820 "All of these system calls are used to wait for state changes in a child of "
9821 "the calling process, and obtain information about the child whose state has "
9822 "changed.  A state change is considered to be: the child terminated; the "
9823 "child was stopped by a signal; or the child was resumed by a signal.  In the "
9824 "case of a terminated child, performing a wait allows the system to release "
9825 "the resources associated with the child; if a wait is not performed, then "
9826 "the terminated child remains in a \"zombie\" state (see NOTES below)."
9827 msgstr ""
9828
9829 #. type: Plain text
9830 #: build/C/man2/wait.2:104
9831 msgid ""
9832 "If a child has already changed state, then these calls return immediately.  "
9833 "Otherwise they block until either a child changes state or a signal handler "
9834 "interrupts the call (assuming that system calls are not automatically "
9835 "restarted using the B<SA_RESTART> flag of B<sigaction>(2)).  In the "
9836 "remainder of this page, a child whose state has changed and which has not "
9837 "yet been waited upon by one of these system calls is termed I<waitable>."
9838 msgstr ""
9839
9840 #. type: SS
9841 #: build/C/man2/wait.2:104
9842 #, no-wrap
9843 msgid "wait() and waitpid()"
9844 msgstr ""
9845
9846 #. type: Plain text
9847 #: build/C/man2/wait.2:112
9848 msgid ""
9849 "The B<wait>()  system call suspends execution of the calling process until "
9850 "one of its children terminates.  The call I<wait(&status)> is equivalent to:"
9851 msgstr ""
9852
9853 #. type: Plain text
9854 #: build/C/man2/wait.2:115
9855 #, no-wrap
9856 msgid "    waitpid(-1, &status, 0);\n"
9857 msgstr ""
9858
9859 #. type: Plain text
9860 #: build/C/man2/wait.2:129
9861 msgid ""
9862 "The B<waitpid>()  system call suspends execution of the calling process "
9863 "until a child specified by I<pid> argument has changed state.  By default, "
9864 "B<waitpid>()  waits only for terminated children, but this behavior is "
9865 "modifiable via the I<options> argument, as described below."
9866 msgstr ""
9867
9868 #. type: Plain text
9869 #: build/C/man2/wait.2:133
9870 msgid "The value of I<pid> can be:"
9871 msgstr ""
9872
9873 #. type: IP
9874 #: build/C/man2/wait.2:133
9875 #, no-wrap
9876 msgid "E<lt> -1"
9877 msgstr ""
9878
9879 #. type: Plain text
9880 #: build/C/man2/wait.2:137
9881 msgid ""
9882 "meaning wait for any child process whose process group ID is equal to the "
9883 "absolute value of I<pid>."
9884 msgstr ""
9885
9886 #. type: IP
9887 #: build/C/man2/wait.2:137
9888 #, no-wrap
9889 msgid "-1"
9890 msgstr ""
9891
9892 #. type: Plain text
9893 #: build/C/man2/wait.2:139
9894 msgid "meaning wait for any child process."
9895 msgstr ""
9896
9897 #. type: IP
9898 #: build/C/man2/wait.2:139
9899 #, no-wrap
9900 msgid "0"
9901 msgstr ""
9902
9903 #. type: Plain text
9904 #: build/C/man2/wait.2:142
9905 msgid ""
9906 "meaning wait for any child process whose process group ID is equal to that "
9907 "of the calling process."
9908 msgstr ""
9909
9910 #. type: IP
9911 #: build/C/man2/wait.2:142
9912 #, no-wrap
9913 msgid "E<gt> 0"
9914 msgstr ""
9915
9916 #. type: Plain text
9917 #: build/C/man2/wait.2:146
9918 msgid "meaning wait for the child whose process ID is equal to the value of I<pid>."
9919 msgstr ""
9920
9921 #. type: Plain text
9922 #: build/C/man2/wait.2:150
9923 msgid "The value of I<options> is an OR of zero or more of the following constants:"
9924 msgstr ""
9925
9926 #. type: TP
9927 #: build/C/man2/wait.2:150 build/C/man2/wait.2:279
9928 #, no-wrap
9929 msgid "B<WNOHANG>"
9930 msgstr ""
9931
9932 #. type: Plain text
9933 #: build/C/man2/wait.2:153
9934 msgid "return immediately if no child has exited."
9935 msgstr ""
9936
9937 #. type: TP
9938 #: build/C/man2/wait.2:153
9939 #, no-wrap
9940 msgid "B<WUNTRACED>"
9941 msgstr ""
9942
9943 #. type: Plain text
9944 #: build/C/man2/wait.2:162
9945 msgid ""
9946 "also return if a child has stopped (but not traced via B<ptrace>(2)).  "
9947 "Status for I<traced> children which have stopped is provided even if this "
9948 "option is not specified."
9949 msgstr ""
9950
9951 #. type: TP
9952 #: build/C/man2/wait.2:162
9953 #, no-wrap
9954 msgid "B<WCONTINUED> (since Linux 2.6.10)"
9955 msgstr ""
9956
9957 #. type: Plain text
9958 #: build/C/man2/wait.2:166
9959 msgid "also return if a stopped child has been resumed by delivery of B<SIGCONT>."
9960 msgstr ""
9961
9962 #. type: Plain text
9963 #: build/C/man2/wait.2:168
9964 msgid "(For Linux-only options, see below.)"
9965 msgstr ""
9966
9967 #. type: Plain text
9968 #: build/C/man2/wait.2:182
9969 msgid ""
9970 "If I<status> is not NULL, B<wait>()  and B<waitpid>()  store status "
9971 "information in the I<int> to which it points.  This integer can be inspected "
9972 "with the following macros (which take the integer itself as an argument, not "
9973 "a pointer to it, as is done in B<wait>()  and B<waitpid>()!):"
9974 msgstr ""
9975
9976 #. type: TP
9977 #: build/C/man2/wait.2:182
9978 #, no-wrap
9979 msgid "B<WIFEXITED(>I<status>B<)>"
9980 msgstr ""
9981
9982 #. type: Plain text
9983 #: build/C/man2/wait.2:190
9984 msgid ""
9985 "returns true if the child terminated normally, that is, by calling "
9986 "B<exit>(3)  or B<_exit>(2), or by returning from main()."
9987 msgstr ""
9988
9989 #. type: TP
9990 #: build/C/man2/wait.2:190
9991 #, no-wrap
9992 msgid "B<WEXITSTATUS(>I<status>B<)>"
9993 msgstr ""
9994
9995 #. type: Plain text
9996 #: build/C/man2/wait.2:203
9997 msgid ""
9998 "returns the exit status of the child.  This consists of the least "
9999 "significant 8 bits of the I<status> argument that the child specified in a "
10000 "call to B<exit>(3)  or B<_exit>(2)  or as the argument for a return "
10001 "statement in main().  This macro should only be employed if B<WIFEXITED> "
10002 "returned true."
10003 msgstr ""
10004
10005 #. type: TP
10006 #: build/C/man2/wait.2:203
10007 #, no-wrap
10008 msgid "B<WIFSIGNALED(>I<status>B<)>"
10009 msgstr ""
10010
10011 #. type: Plain text
10012 #: build/C/man2/wait.2:206
10013 msgid "returns true if the child process was terminated by a signal."
10014 msgstr ""
10015
10016 #. type: TP
10017 #: build/C/man2/wait.2:206
10018 #, no-wrap
10019 msgid "B<WTERMSIG(>I<status>B<)>"
10020 msgstr ""
10021
10022 #. type: Plain text
10023 #: build/C/man2/wait.2:213
10024 msgid ""
10025 "returns the number of the signal that caused the child process to "
10026 "terminate.  This macro should only be employed if B<WIFSIGNALED> returned "
10027 "true."
10028 msgstr ""
10029
10030 #. type: TP
10031 #: build/C/man2/wait.2:213
10032 #, no-wrap
10033 msgid "B<WCOREDUMP(>I<status>B<)>"
10034 msgstr ""
10035
10036 #. type: Plain text
10037 #: build/C/man2/wait.2:222
10038 msgid ""
10039 "returns true if the child produced a core dump.  This macro should only be "
10040 "employed if B<WIFSIGNALED> returned true.  This macro is not specified in "
10041 "POSIX.1-2001 and is not available on some UNIX implementations (e.g., AIX, "
10042 "SunOS).  Only use this enclosed in #ifdef WCOREDUMP ... #endif."
10043 msgstr ""
10044
10045 #. type: TP
10046 #: build/C/man2/wait.2:222
10047 #, no-wrap
10048 msgid "B<WIFSTOPPED(>I<status>B<)>"
10049 msgstr ""
10050
10051 #. type: Plain text
10052 #: build/C/man2/wait.2:229
10053 msgid ""
10054 "returns true if the child process was stopped by delivery of a signal; this "
10055 "is only possible if the call was done using B<WUNTRACED> or when the child "
10056 "is being traced (see B<ptrace>(2))."
10057 msgstr ""
10058
10059 #. type: TP
10060 #: build/C/man2/wait.2:229
10061 #, no-wrap
10062 msgid "B<WSTOPSIG(>I<status>B<)>"
10063 msgstr ""
10064
10065 #. type: Plain text
10066 #: build/C/man2/wait.2:235
10067 msgid ""
10068 "returns the number of the signal which caused the child to stop.  This macro "
10069 "should only be employed if B<WIFSTOPPED> returned true."
10070 msgstr ""
10071
10072 #. type: TP
10073 #: build/C/man2/wait.2:235
10074 #, no-wrap
10075 msgid "B<WIFCONTINUED(>I<status>B<)>"
10076 msgstr ""
10077
10078 #. type: Plain text
10079 #: build/C/man2/wait.2:240
10080 msgid ""
10081 "(since Linux 2.6.10)  returns true if the child process was resumed by "
10082 "delivery of B<SIGCONT>."
10083 msgstr ""
10084
10085 #. type: SS
10086 #: build/C/man2/wait.2:240
10087 #, no-wrap
10088 msgid "waitid()"
10089 msgstr ""
10090
10091 #. type: Plain text
10092 #: build/C/man2/wait.2:245
10093 msgid ""
10094 "The B<waitid>()  system call (available since Linux 2.6.9) provides more "
10095 "precise control over which child state changes to wait for."
10096 msgstr ""
10097
10098 #. type: Plain text
10099 #: build/C/man2/wait.2:251
10100 msgid ""
10101 "The I<idtype> and I<id> arguments select the child(ren) to wait for, as "
10102 "follows:"
10103 msgstr ""
10104
10105 #. type: IP
10106 #: build/C/man2/wait.2:251
10107 #, no-wrap
10108 msgid "I<idtype> == B<P_PID>"
10109 msgstr ""
10110
10111 #. type: Plain text
10112 #: build/C/man2/wait.2:254
10113 msgid "Wait for the child whose process ID matches I<id>."
10114 msgstr ""
10115
10116 #. type: IP
10117 #: build/C/man2/wait.2:254
10118 #, no-wrap
10119 msgid "I<idtype> == B<P_PGID>"
10120 msgstr ""
10121
10122 #. type: Plain text
10123 #: build/C/man2/wait.2:257
10124 msgid "Wait for any child whose process group ID matches I<id>."
10125 msgstr ""
10126
10127 #. type: IP
10128 #: build/C/man2/wait.2:257
10129 #, no-wrap
10130 msgid "I<idtype> == B<P_ALL>"
10131 msgstr ""
10132
10133 #. type: Plain text
10134 #: build/C/man2/wait.2:261
10135 msgid "Wait for any child; I<id> is ignored."
10136 msgstr ""
10137
10138 #. type: Plain text
10139 #: build/C/man2/wait.2:265
10140 msgid ""
10141 "The child state changes to wait for are specified by ORing one or more of "
10142 "the following flags in I<options>:"
10143 msgstr ""
10144
10145 #. type: TP
10146 #: build/C/man2/wait.2:265
10147 #, no-wrap
10148 msgid "B<WEXITED>"
10149 msgstr ""
10150
10151 #. type: Plain text
10152 #: build/C/man2/wait.2:268
10153 msgid "Wait for children that have terminated."
10154 msgstr ""
10155
10156 #. type: TP
10157 #: build/C/man2/wait.2:268
10158 #, no-wrap
10159 msgid "B<WSTOPPED>"
10160 msgstr ""
10161
10162 #. type: Plain text
10163 #: build/C/man2/wait.2:271
10164 msgid "Wait for children that have been stopped by delivery of a signal."
10165 msgstr ""
10166
10167 #. type: TP
10168 #: build/C/man2/wait.2:271
10169 #, no-wrap
10170 msgid "B<WCONTINUED>"
10171 msgstr ""
10172
10173 #. type: Plain text
10174 #: build/C/man2/wait.2:276
10175 msgid ""
10176 "Wait for (previously stopped) children that have been resumed by delivery of "
10177 "B<SIGCONT>."
10178 msgstr ""
10179
10180 #. type: Plain text
10181 #: build/C/man2/wait.2:279
10182 msgid "The following flags may additionally be ORed in I<options>:"
10183 msgstr ""
10184
10185 #. type: Plain text
10186 #: build/C/man2/wait.2:283
10187 msgid "As for B<waitpid>()."
10188 msgstr ""
10189
10190 #. type: TP
10191 #: build/C/man2/wait.2:283
10192 #, no-wrap
10193 msgid "B<WNOWAIT>"
10194 msgstr ""
10195
10196 #. type: Plain text
10197 #: build/C/man2/wait.2:287
10198 msgid ""
10199 "Leave the child in a waitable state; a later wait call can be used to again "
10200 "retrieve the child status information."
10201 msgstr ""
10202
10203 #. type: Plain text
10204 #: build/C/man2/wait.2:294
10205 msgid ""
10206 "Upon successful return, B<waitid>()  fills in the following fields of the "
10207 "I<siginfo_t> structure pointed to by I<infop>:"
10208 msgstr ""
10209
10210 #. type: Plain text
10211 #: build/C/man2/wait.2:297
10212 msgid "The process ID of the child."
10213 msgstr ""
10214
10215 #. type: Plain text
10216 #: build/C/man2/wait.2:301
10217 msgid ""
10218 "The real user ID of the child.  (This field is not set on most other "
10219 "implementations.)"
10220 msgstr ""
10221
10222 #. type: Plain text
10223 #: build/C/man2/wait.2:305
10224 msgid "Always set to B<SIGCHLD>."
10225 msgstr ""
10226
10227 #. type: TP
10228 #: build/C/man2/wait.2:305
10229 #, no-wrap
10230 msgid "I<si_status>"
10231 msgstr ""
10232
10233 #. type: Plain text
10234 #: build/C/man2/wait.2:315
10235 msgid ""
10236 "Either the exit status of the child, as given to B<_exit>(2)  (or "
10237 "B<exit>(3)), or the signal that caused the child to terminate, stop, or "
10238 "continue.  The I<si_code> field can be used to determine how to interpret "
10239 "this field."
10240 msgstr ""
10241
10242 #. type: Plain text
10243 #: build/C/man2/wait.2:332
10244 msgid ""
10245 "Set to one of: B<CLD_EXITED> (child called B<_exit>(2)); B<CLD_KILLED> "
10246 "(child killed by signal); B<CLD_DUMPED> (child killed by signal, and dumped "
10247 "core); B<CLD_STOPPED> (child stopped by signal); B<CLD_TRAPPED> (traced "
10248 "child has trapped); or B<CLD_CONTINUED> (child continued by B<SIGCONT>)."
10249 msgstr ""
10250
10251 #.  POSIX.1-2001 leaves this possibility unspecified; most
10252 #.  implementations (including Linux) zero out the structure
10253 #.  in this case, but at least one implementation (AIX 5.1)
10254 #.  does not -- MTK Nov 04
10255 #. type: Plain text
10256 #: build/C/man2/wait.2:354
10257 msgid ""
10258 "If B<WNOHANG> was specified in I<options> and there were no children in a "
10259 "waitable state, then B<waitid>()  returns 0 immediately and the state of the "
10260 "I<siginfo_t> structure pointed to by I<infop> is unspecified.  To "
10261 "distinguish this case from that where a child was in a waitable state, zero "
10262 "out the I<si_pid> field before the call and check for a nonzero value in "
10263 "this field after the call returns."
10264 msgstr ""
10265
10266 #. type: Plain text
10267 #: build/C/man2/wait.2:358
10268 msgid ""
10269 "B<wait>(): on success, returns the process ID of the terminated child; on "
10270 "error, -1 is returned."
10271 msgstr ""
10272
10273 #. type: Plain text
10274 #: build/C/man2/wait.2:367
10275 msgid ""
10276 "B<waitpid>(): on success, returns the process ID of the child whose state "
10277 "has changed; if B<WNOHANG> was specified and one or more child(ren) "
10278 "specified by I<pid> exist, but have not yet changed state, then 0 is "
10279 "returned.  On error, -1 is returned."
10280 msgstr ""
10281
10282 #.  FIXME: As reported by Vegard Nossum, if infop is NULL, then waitid()
10283 #.  returns the PID of the child.  Either this is a bug, or it is intended
10284 #.  behavior that needs to be documented.  See my Jan 2009 LKML mail
10285 #.  "waitid() return value strangeness when infop is NULL".
10286 #. type: Plain text
10287 #: build/C/man2/wait.2:383
10288 msgid ""
10289 "B<waitid>(): returns 0 on success or if B<WNOHANG> was specified and no "
10290 "child(ren) specified by I<id> has yet changed state; on error, -1 is "
10291 "returned.  Each of these calls sets I<errno> to an appropriate value in the "
10292 "case of an error."
10293 msgstr ""
10294
10295 #. type: TP
10296 #: build/C/man2/wait.2:384 build/C/man2/wait.2:389
10297 #, no-wrap
10298 msgid "B<ECHILD>"
10299 msgstr ""
10300
10301 #. type: Plain text
10302 #: build/C/man2/wait.2:389
10303 msgid ""
10304 "(for B<wait>())  The calling process does not have any unwaited-for "
10305 "children."
10306 msgstr ""
10307
10308 #. type: Plain text
10309 #: build/C/man2/wait.2:409
10310 msgid ""
10311 "(for B<waitpid>()  or B<waitid>())  The process specified by I<pid> "
10312 "(B<waitpid>())  or I<idtype> and I<id> (B<waitid>())  does not exist or is "
10313 "not a child of the calling process.  (This can happen for one's own child if "
10314 "the action for B<SIGCHLD> is set to B<SIG_IGN>.  See also the I<Linux Notes> "
10315 "section about threads.)"
10316 msgstr ""
10317
10318 #. type: Plain text
10319 #: build/C/man2/wait.2:416
10320 msgid ""
10321 "B<WNOHANG> was not set and an unblocked signal or a B<SIGCHLD> was caught; "
10322 "see B<signal>(7)."
10323 msgstr ""
10324
10325 #. type: Plain text
10326 #: build/C/man2/wait.2:421
10327 msgid "The I<options> argument was invalid."
10328 msgstr ""
10329
10330 #. type: Plain text
10331 #: build/C/man2/wait.2:436
10332 msgid ""
10333 "A child that terminates, but has not been waited for becomes a \"zombie\".  "
10334 "The kernel maintains a minimal set of information about the zombie process "
10335 "(PID, termination status, resource usage information)  in order to allow the "
10336 "parent to later perform a wait to obtain information about the child.  As "
10337 "long as a zombie is not removed from the system via a wait, it will consume "
10338 "a slot in the kernel process table, and if this table fills, it will not be "
10339 "possible to create further processes.  If a parent process terminates, then "
10340 "its \"zombie\" children (if any)  are adopted by B<init>(8), which "
10341 "automatically performs a wait to remove the zombies."
10342 msgstr ""
10343
10344 #. type: Plain text
10345 #: build/C/man2/wait.2:477
10346 msgid ""
10347 "POSIX.1-2001 specifies that if the disposition of B<SIGCHLD> is set to "
10348 "B<SIG_IGN> or the B<SA_NOCLDWAIT> flag is set for B<SIGCHLD> (see "
10349 "B<sigaction>(2)), then children that terminate do not become zombies and a "
10350 "call to B<wait>()  or B<waitpid>()  will block until all children have "
10351 "terminated, and then fail with I<errno> set to B<ECHILD>.  (The original "
10352 "POSIX standard left the behavior of setting B<SIGCHLD> to B<SIG_IGN> "
10353 "unspecified.  Note that even though the default disposition of B<SIGCHLD> is "
10354 "\"ignore\", explicitly setting the disposition to B<SIG_IGN> results in "
10355 "different treatment of zombie process children.)  Linux 2.6 conforms to this "
10356 "specification.  However, Linux 2.4 (and earlier) does not: if a B<wait>()  "
10357 "or B<waitpid>()  call is made while B<SIGCHLD> is being ignored, the call "
10358 "behaves just as though B<SIGCHLD> were not being ignored, that is, the call "
10359 "blocks until the next child terminates and then returns the process ID and "
10360 "status of that child."
10361 msgstr ""
10362
10363 #. type: Plain text
10364 #: build/C/man2/wait.2:493
10365 msgid ""
10366 "In the Linux kernel, a kernel-scheduled thread is not a distinct construct "
10367 "from a process.  Instead, a thread is simply a process that is created using "
10368 "the Linux-unique B<clone>(2)  system call; other routines such as the "
10369 "portable B<pthread_create>(3)  call are implemented using B<clone>(2).  "
10370 "Before Linux 2.4, a thread was just a special case of a process, and as a "
10371 "consequence one thread could not wait on the children of another thread, "
10372 "even when the latter belongs to the same thread group.  However, POSIX "
10373 "prescribes such functionality, and since Linux 2.4 a thread can, and by "
10374 "default will, wait on children of other threads in the same thread group."
10375 msgstr ""
10376
10377 #. type: Plain text
10378 #: build/C/man2/wait.2:500
10379 msgid ""
10380 "The following Linux-specific I<options> are for use with children created "
10381 "using B<clone>(2); they cannot be used with B<waitid>():"
10382 msgstr ""
10383
10384 #. type: TP
10385 #: build/C/man2/wait.2:500
10386 #, no-wrap
10387 msgid "B<__WCLONE>"
10388 msgstr ""
10389
10390 #.  since 0.99pl10
10391 #. type: Plain text
10392 #: build/C/man2/wait.2:511
10393 msgid ""
10394 "Wait for \"clone\" children only.  If omitted then wait for \"non-clone\" "
10395 "children only.  (A \"clone\" child is one which delivers no signal, or a "
10396 "signal other than B<SIGCHLD> to its parent upon termination.)  This option "
10397 "is ignored if B<__WALL> is also specified."
10398 msgstr ""
10399
10400 #. type: TP
10401 #: build/C/man2/wait.2:511
10402 #, no-wrap
10403 msgid "B<__WALL> (since Linux 2.4)"
10404 msgstr ""
10405
10406 #.  since patch-2.3.48
10407 #. type: Plain text
10408 #: build/C/man2/wait.2:516
10409 msgid "Wait for all children, regardless of type (\"clone\" or \"non-clone\")."
10410 msgstr ""
10411
10412 #. type: TP
10413 #: build/C/man2/wait.2:516
10414 #, no-wrap
10415 msgid "B<__WNOTHREAD> (since Linux 2.4)"
10416 msgstr ""
10417
10418 #.  since patch-2.4.0-test8
10419 #. type: Plain text
10420 #: build/C/man2/wait.2:522
10421 msgid ""
10422 "Do not wait for children of other threads in the same thread group.  This "
10423 "was the default before Linux 2.4."
10424 msgstr ""
10425
10426 #.  fork.2 refers to this example program.
10427 #. type: Plain text
10428 #: build/C/man2/wait.2:539
10429 msgid ""
10430 "The following program demonstrates the use of B<fork>(2)  and B<waitpid>().  "
10431 "The program creates a child process.  If no command-line argument is "
10432 "supplied to the program, then the child suspends its execution using "
10433 "B<pause>(2), to allow the user to send signals to the child.  Otherwise, if "
10434 "a command-line argument is supplied, then the child exits immediately, using "
10435 "the integer supplied on the command line as the exit status.  The parent "
10436 "process executes a loop that monitors the child using B<waitpid>(), and uses "
10437 "the W*() macros described above to analyze the wait status value."
10438 msgstr ""
10439
10440 #. type: Plain text
10441 #: build/C/man2/wait.2:555
10442 #, no-wrap
10443 msgid ""
10444 "$B< ./a.out &>\n"
10445 "Child PID is 32360\n"
10446 "[1] 32359\n"
10447 "$B< kill -STOP 32360>\n"
10448 "stopped by signal 19\n"
10449 "$B< kill -CONT 32360>\n"
10450 "continued\n"
10451 "$B< kill -TERM 32360>\n"
10452 "killed by signal 15\n"
10453 "[1]+  Done                    ./a.out\n"
10454 "$\n"
10455 msgstr ""
10456
10457 #. type: Plain text
10458 #: build/C/man2/wait.2:564
10459 #, no-wrap
10460 msgid ""
10461 "#include E<lt>sys/wait.hE<gt>\n"
10462 "#include E<lt>stdlib.hE<gt>\n"
10463 "#include E<lt>unistd.hE<gt>\n"
10464 "#include E<lt>stdio.hE<gt>\n"
10465 msgstr ""
10466
10467 #. type: Plain text
10468 #: build/C/man2/wait.2:570
10469 #, no-wrap
10470 msgid ""
10471 "int\n"
10472 "main(int argc, char *argv[])\n"
10473 "{\n"
10474 "    pid_t cpid, w;\n"
10475 "    int status;\n"
10476 msgstr ""
10477
10478 #. type: Plain text
10479 #: build/C/man2/wait.2:576
10480 #, no-wrap
10481 msgid ""
10482 "    cpid = fork();\n"
10483 "    if (cpid == -1) {\n"
10484 "        perror(\"fork\");\n"
10485 "        exit(EXIT_FAILURE);\n"
10486 "    }\n"
10487 msgstr ""
10488
10489 #. type: Plain text
10490 #: build/C/man2/wait.2:582
10491 #, no-wrap
10492 msgid ""
10493 "    if (cpid == 0) {            /* Code executed by child */\n"
10494 "        printf(\"Child PID is %ld\\en\", (long) getpid());\n"
10495 "        if (argc == 1)\n"
10496 "            pause();                    /* Wait for signals */\n"
10497 "        _exit(atoi(argv[1]));\n"
10498 msgstr ""
10499
10500 #. type: Plain text
10501 #: build/C/man2/wait.2:590
10502 #, no-wrap
10503 msgid ""
10504 "    } else {                    /* Code executed by parent */\n"
10505 "        do {\n"
10506 "            w = waitpid(cpid, &status, WUNTRACED | WCONTINUED);\n"
10507 "            if (w == -1) {\n"
10508 "                perror(\"waitpid\");\n"
10509 "                exit(EXIT_FAILURE);\n"
10510 "            }\n"
10511 msgstr ""
10512
10513 #. type: Plain text
10514 #: build/C/man2/wait.2:604
10515 #, no-wrap
10516 msgid ""
10517 "            if (WIFEXITED(status)) {\n"
10518 "                printf(\"exited, status=%d\\en\", WEXITSTATUS(status));\n"
10519 "            } else if (WIFSIGNALED(status)) {\n"
10520 "                printf(\"killed by signal %d\\en\", WTERMSIG(status));\n"
10521 "            } else if (WIFSTOPPED(status)) {\n"
10522 "                printf(\"stopped by signal %d\\en\", WSTOPSIG(status));\n"
10523 "            } else if (WIFCONTINUED(status)) {\n"
10524 "                printf(\"continued\\en\");\n"
10525 "            }\n"
10526 "        } while (!WIFEXITED(status) && !WIFSIGNALED(status));\n"
10527 "        exit(EXIT_SUCCESS);\n"
10528 "    }\n"
10529 "}\n"
10530 msgstr ""
10531
10532 #. type: Plain text
10533 #: build/C/man2/wait.2:617
10534 msgid ""
10535 "B<_exit>(2), B<clone>(2), B<fork>(2), B<kill>(2), B<ptrace>(2), "
10536 "B<sigaction>(2), B<signal>(2), B<wait4>(2), B<pthread_create>(3), "
10537 "B<credentials>(7), B<signal>(7)"
10538 msgstr ""
10539
10540 #. type: TH
10541 #: build/C/man2/wait4.2:34
10542 #, no-wrap
10543 msgid "WAIT4"
10544 msgstr ""
10545
10546 #. type: Plain text
10547 #: build/C/man2/wait4.2:37
10548 msgid "wait3, wait4 - wait for process to change state, BSD style"
10549 msgstr ""
10550
10551 #. type: Plain text
10552 #: build/C/man2/wait4.2:43
10553 #, no-wrap
10554 msgid ""
10555 "B<#include E<lt>sys/types.hE<gt>>\n"
10556 "B<#include E<lt>sys/time.hE<gt>>\n"
10557 "B<#include E<lt>sys/resource.hE<gt>>\n"
10558 "B<#include E<lt>sys/wait.hE<gt>>\n"
10559 msgstr ""
10560
10561 #. type: Plain text
10562 #: build/C/man2/wait4.2:46
10563 #, no-wrap
10564 msgid ""
10565 "B<pid_t wait3(int *>I<status>B<, int >I<options>B<,>\n"
10566 "B<            struct rusage *>I<rusage>B<);>\n"
10567 msgstr ""
10568
10569 #. type: Plain text
10570 #: build/C/man2/wait4.2:49
10571 #, no-wrap
10572 msgid ""
10573 "B<pid_t wait4(pid_t >I<pid>B<, int *>I<status>B<, int >I<options>B<,>\n"
10574 "B<            struct rusage *>I<rusage>B<);>\n"
10575 msgstr ""
10576
10577 #. type: Plain text
10578 #: build/C/man2/wait4.2:58
10579 msgid "B<wait3>():"
10580 msgstr ""
10581
10582 #. type: Plain text
10583 #: build/C/man2/wait4.2:64
10584 msgid "B<wait4>():"
10585 msgstr ""
10586
10587 #. type: Plain text
10588 #: build/C/man2/wait4.2:66
10589 msgid "_BSD_SOURCE"
10590 msgstr ""
10591
10592 #. type: Plain text
10593 #: build/C/man2/wait4.2:78
10594 msgid ""
10595 "The B<wait3>()  and B<wait4>()  system calls are similar to B<waitpid>(2), "
10596 "but additionally return resource usage information about the child in the "
10597 "structure pointed to by I<rusage>."
10598 msgstr ""
10599
10600 #. type: Plain text
10601 #: build/C/man2/wait4.2:84
10602 msgid ""
10603 "Other than the use of the I<rusage> argument, the following B<wait3>()  "
10604 "call:"
10605 msgstr ""
10606
10607 #. type: Plain text
10608 #: build/C/man2/wait4.2:87
10609 #, no-wrap
10610 msgid "    wait3(status, options, rusage);\n"
10611 msgstr ""
10612
10613 #. type: Plain text
10614 #: build/C/man2/wait4.2:90 build/C/man2/wait4.2:104
10615 msgid "is equivalent to:"
10616 msgstr ""
10617
10618 #. type: Plain text
10619 #: build/C/man2/wait4.2:93
10620 #, no-wrap
10621 msgid "    waitpid(-1, status, options);\n"
10622 msgstr ""
10623
10624 #. type: Plain text
10625 #: build/C/man2/wait4.2:98
10626 msgid "Similarly, the following B<wait4>()  call:"
10627 msgstr ""
10628
10629 #. type: Plain text
10630 #: build/C/man2/wait4.2:101
10631 #, no-wrap
10632 msgid "    wait4(pid, status, options, rusage);\n"
10633 msgstr ""
10634
10635 #. type: Plain text
10636 #: build/C/man2/wait4.2:107
10637 #, no-wrap
10638 msgid "    waitpid(pid, status, options);\n"
10639 msgstr ""
10640
10641 #. type: Plain text
10642 #: build/C/man2/wait4.2:117
10643 msgid ""
10644 "In other words, B<wait3>()  waits of any child, while B<wait4>()  can be "
10645 "used to select a specific child, or children, on which to wait.  See "
10646 "B<wait>(2)  for further details."
10647 msgstr ""
10648
10649 #. type: Plain text
10650 #: build/C/man2/wait4.2:127
10651 msgid ""
10652 "If I<rusage> is not NULL, the I<struct rusage> to which it points will be "
10653 "filled with accounting information about the child.  See B<getrusage>(2)  "
10654 "for details."
10655 msgstr ""
10656
10657 #. type: Plain text
10658 #: build/C/man2/wait4.2:130 build/C/man2/wait4.2:133
10659 msgid "As for B<waitpid>(2)."
10660 msgstr ""
10661
10662 #. type: Plain text
10663 #: build/C/man2/wait4.2:135
10664 msgid "4.3BSD."
10665 msgstr ""
10666
10667 #. type: Plain text
10668 #: build/C/man2/wait4.2:147
10669 msgid ""
10670 "Including I<E<lt>sys/time.hE<gt>> is not required these days, but increases "
10671 "portability.  (Indeed, I<E<lt>sys/resource.hE<gt>> defines the I<rusage> "
10672 "structure with fields of type I<struct timeval> defined in "
10673 "I<E<lt>sys/time.hE<gt>>.)"
10674 msgstr ""
10675
10676 #. type: Plain text
10677 #: build/C/man2/wait4.2:153
10678 msgid ""
10679 "On Linux, B<wait3>()  is a library function implemented on top of the "
10680 "B<wait4>()  system call."
10681 msgstr ""
10682
10683 #. type: Plain text
10684 #: build/C/man2/wait4.2:160
10685 msgid ""
10686 "B<fork>(2), B<getrusage>(2), B<sigaction>(2), B<signal>(2), B<wait>(2), "
10687 "B<signal>(7)"
10688 msgstr ""