OSDN Git Service

(split) LDP: Update POT and ja.po to LDP v3.53.
[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: 2013-08-15 19:32+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:25
21 #, no-wrap
22 msgid "BSD_SIGNAL"
23 msgstr ""
24
25 #. type: TH
26 #: build/C/man3/bsd_signal.3:25
27 #, no-wrap
28 msgid "2009-03-15"
29 msgstr ""
30
31 #. type: TH
32 #: build/C/man3/bsd_signal.3:25 build/C/man2/eventfd.2:22 build/C/man2/getitimer.2:12 build/C/man3/gsignal.3:27 build/C/man2/kill.2:44 build/C/man2/killpg.2:42 build/C/man2/pause.2:30 build/C/man2/prctl.2:52 build/C/man3/profil.3:28 build/C/man3/psignal.3:30 build/C/man3/raise.3:29 build/C/man2/restart_syscall.2:33 build/C/man2/rt_sigqueueinfo.2:25 build/C/man2/s390_runtime_instr.2:25 build/C/man2/sgetmask.2:26 build/C/man2/sigaction.2:47 build/C/man2/sigaltstack.2:27 build/C/man7/sigevent.7:26 build/C/man3/siginterrupt.3:31 build/C/man2/signal.2:36 build/C/man7/signal.7:46 build/C/man2/signalfd.2:20 build/C/man3/sigpause.3:25 build/C/man2/sigpending.2:29 build/C/man2/sigprocmask.2:29 build/C/man3/sigqueue.3:28 build/C/man2/sigreturn.2:29 build/C/man3/sigset.3:26 build/C/man3/sigsetops.3:31 build/C/man2/sigsuspend.2:29 build/C/man3/sigvec.3:26 build/C/man3/sigwait.3:26 build/C/man2/sigwaitinfo.2:25 build/C/man3/sysv_signal.3:25 build/C/man2/timer_create.2:31 build/C/man2/timer_delete.2:26 build/C/man2/timer_getoverrun.2:26 build/C/man2/timer_settime.2:26 build/C/man2/timerfd_create.2:21 build/C/man2/tkill.2:29 build/C/man2/wait.2:49 build/C/man2/wait4.2:33
33 #, no-wrap
34 msgid "Linux Programmer's Manual"
35 msgstr ""
36
37 #. type: SH
38 #: build/C/man3/bsd_signal.3:26 build/C/man2/eventfd.2:23 build/C/man2/getitimer.2:13 build/C/man3/gsignal.3:28 build/C/man2/kill.2:45 build/C/man2/killpg.2:43 build/C/man2/pause.2:31 build/C/man2/prctl.2:53 build/C/man3/profil.3:29 build/C/man3/psignal.3:31 build/C/man3/raise.3:30 build/C/man2/restart_syscall.2:34 build/C/man2/rt_sigqueueinfo.2:26 build/C/man2/s390_runtime_instr.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/man7/signal.7:47 build/C/man2/signalfd.2:21 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:32 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:27 build/C/man2/timer_getoverrun.2:27 build/C/man2/timer_settime.2:27 build/C/man2/timerfd_create.2:22 build/C/man2/tkill.2:30 build/C/man2/wait.2:50 build/C/man2/wait4.2:34
39 #, no-wrap
40 msgid "NAME"
41 msgstr ""
42
43 #. type: Plain text
44 #: build/C/man3/bsd_signal.3:28
45 msgid "bsd_signal - signal handling with BSD semantics"
46 msgstr ""
47
48 #. type: SH
49 #: build/C/man3/bsd_signal.3:28 build/C/man2/eventfd.2:25 build/C/man2/getitimer.2:15 build/C/man3/gsignal.3:30 build/C/man2/kill.2:47 build/C/man2/killpg.2:45 build/C/man2/pause.2:33 build/C/man2/prctl.2:55 build/C/man3/profil.3:31 build/C/man3/psignal.3:33 build/C/man3/raise.3:32 build/C/man2/restart_syscall.2:36 build/C/man2/rt_sigqueueinfo.2:28 build/C/man2/s390_runtime_instr.2:28 build/C/man2/sgetmask.2:29 build/C/man2/sigaction.2:50 build/C/man2/sigaltstack.2:30 build/C/man7/sigevent.7:29 build/C/man3/siginterrupt.3:34 build/C/man2/signal.2:39 build/C/man2/signalfd.2:23 build/C/man3/sigpause.3:28 build/C/man2/sigpending.2:32 build/C/man2/sigprocmask.2:32 build/C/man3/sigqueue.3:31 build/C/man2/sigreturn.2:32 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/sigwait.3:29 build/C/man2/sigwaitinfo.2:28 build/C/man3/sysv_signal.3:28 build/C/man2/timer_create.2:34 build/C/man2/timer_delete.2:29 build/C/man2/timer_getoverrun.2:29 build/C/man2/timer_settime.2:30 build/C/man2/timerfd_create.2:25 build/C/man2/tkill.2:32 build/C/man2/wait.2:52 build/C/man2/wait4.2:36
50 #, no-wrap
51 msgid "SYNOPSIS"
52 msgstr ""
53
54 #. type: Plain text
55 #: build/C/man3/bsd_signal.3:30
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:32 build/C/man2/killpg.2:47 build/C/man2/sigaltstack.2:32 build/C/man2/signal.2:41 build/C/man2/sigpending.2:34 build/C/man2/sigprocmask.2:34 build/C/man3/sigqueue.3:33 build/C/man3/sigset.3:31 build/C/man3/sigsetops.3:37 build/C/man2/sigsuspend.2:34 build/C/man3/sigvec.3:31 build/C/man3/sysv_signal.3:32
61 msgid "B<#include E<lt>signal.hE<gt>>"
62 msgstr ""
63
64 #. type: Plain text
65 #: build/C/man3/bsd_signal.3:34 build/C/man2/signal.2:43 build/C/man3/sigset.3:33 build/C/man3/sysv_signal.3:34
66 msgid "B<typedef void (*sighandler_t)(int);>"
67 msgstr ""
68
69 #. type: Plain text
70 #: build/C/man3/bsd_signal.3:36
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:36 build/C/man2/eventfd.2:29 build/C/man2/getitimer.2:24 build/C/man3/gsignal.3:49 build/C/man2/kill.2:65 build/C/man2/killpg.2:60 build/C/man2/pause.2:37 build/C/man2/prctl.2:62 build/C/man3/profil.3:46 build/C/man3/psignal.3:56 build/C/man3/raise.3:38 build/C/man2/restart_syscall.2:41 build/C/man2/rt_sigqueueinfo.2:38 build/C/man2/s390_runtime_instr.2:34 build/C/man2/sgetmask.2:36 build/C/man2/sigaction.2:70 build/C/man2/sigaltstack.2:51 build/C/man7/sigevent.7:52 build/C/man3/siginterrupt.3:55 build/C/man2/signal.2:45 build/C/man7/signal.7:49 build/C/man2/signalfd.2:27 build/C/man3/sigpause.3:36 build/C/man2/sigpending.2:46 build/C/man2/sigprocmask.2:47 build/C/man3/sigqueue.3:43 build/C/man2/sigreturn.2:34 build/C/man3/sigset.3:58 build/C/man3/sigsetops.3:63 build/C/man2/sigsuspend.2:46 build/C/man3/sigvec.3:49 build/C/man3/sigwait.3:45 build/C/man2/sigwaitinfo.2:46 build/C/man3/sysv_signal.3:36 build/C/man2/timer_create.2:52 build/C/man2/timer_delete.2:45 build/C/man2/timer_getoverrun.2:45 build/C/man2/timer_settime.2:50 build/C/man2/timerfd_create.2:37 build/C/man2/tkill.2:41 build/C/man2/wait.2:81 build/C/man2/wait4.2:67
76 #, no-wrap
77 msgid "DESCRIPTION"
78 msgstr ""
79
80 #. type: Plain text
81 #: build/C/man3/bsd_signal.3:41
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:54
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:54 build/C/man2/eventfd.2:222 build/C/man2/getitimer.2:122 build/C/man2/kill.2:99 build/C/man2/killpg.2:89 build/C/man2/pause.2:42 build/C/man2/prctl.2:775 build/C/man3/profil.3:68 build/C/man3/psignal.3:89 build/C/man3/raise.3:61 build/C/man2/restart_syscall.2:84 build/C/man2/rt_sigqueueinfo.2:129 build/C/man2/s390_runtime_instr.2:54 build/C/man2/sgetmask.2:59 build/C/man2/sigaction.2:660 build/C/man2/sigaltstack.2:133 build/C/man3/siginterrupt.3:73 build/C/man2/signal.2:97 build/C/man2/signalfd.2:251 build/C/man3/sigpause.3:48 build/C/man2/sigpending.2:53 build/C/man2/sigprocmask.2:93 build/C/man3/sigqueue.3:83 build/C/man2/sigreturn.2:53 build/C/man3/sigset.3:129 build/C/man3/sigsetops.3:107 build/C/man2/sigsuspend.2:70 build/C/man3/sigvec.3:199 build/C/man3/sigwait.3:69 build/C/man2/sigwaitinfo.2:105 build/C/man3/sysv_signal.3:51 build/C/man2/timer_create.2:167 build/C/man2/timer_delete.2:53 build/C/man2/timer_getoverrun.2:82 build/C/man2/timer_settime.2:173 build/C/man2/timerfd_create.2:287 build/C/man2/tkill.2:95 build/C/man2/wait.2:353 build/C/man2/wait4.2:132
101 #, no-wrap
102 msgid "RETURN VALUE"
103 msgstr ""
104
105 #. type: Plain text
106 #: build/C/man3/bsd_signal.3:60
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:60 build/C/man2/eventfd.2:229 build/C/man2/getitimer.2:127 build/C/man2/kill.2:104 build/C/man2/killpg.2:94 build/C/man2/pause.2:53 build/C/man2/prctl.2:793 build/C/man2/restart_syscall.2:88 build/C/man2/rt_sigqueueinfo.2:134 build/C/man2/s390_runtime_instr.2:65 build/C/man2/sgetmask.2:64 build/C/man2/sigaction.2:665 build/C/man2/sigaltstack.2:137 build/C/man3/siginterrupt.3:83 build/C/man2/signal.2:105 build/C/man2/signalfd.2:265 build/C/man2/sigpending.2:59 build/C/man2/sigprocmask.2:99 build/C/man3/sigqueue.3:91 build/C/man3/sigset.3:154 build/C/man3/sigsetops.3:126 build/C/man2/sigsuspend.2:76 build/C/man3/sigvec.3:216 build/C/man3/sigwait.3:74 build/C/man2/sigwaitinfo.2:114 build/C/man3/sysv_signal.3:57 build/C/man2/timer_create.2:175 build/C/man2/timer_delete.2:60 build/C/man2/timer_getoverrun.2:90 build/C/man2/timer_settime.2:182 build/C/man2/timerfd_create.2:302 build/C/man2/tkill.2:99 build/C/man2/wait.2:382 build/C/man2/wait4.2:135
114 #, no-wrap
115 msgid "ERRORS"
116 msgstr ""
117
118 #. type: Plain text
119 #: build/C/man3/bsd_signal.3:63 build/C/man3/sysv_signal.3:60
120 msgid "As for B<signal>(2)."
121 msgstr ""
122
123 #. type: SH
124 #: build/C/man3/bsd_signal.3:63 build/C/man2/eventfd.2:266 build/C/man2/getitimer.2:148 build/C/man3/gsignal.3:95 build/C/man2/kill.2:120 build/C/man2/killpg.2:111 build/C/man2/pause.2:57 build/C/man2/prctl.2:965 build/C/man3/profil.3:70 build/C/man3/psignal.3:99 build/C/man3/raise.3:64 build/C/man2/restart_syscall.2:96 build/C/man2/rt_sigqueueinfo.2:176 build/C/man2/s390_runtime_instr.2:81 build/C/man2/sgetmask.2:66 build/C/man2/sigaction.2:677 build/C/man2/sigaltstack.2:156 build/C/man7/sigevent.7:130 build/C/man3/siginterrupt.3:87 build/C/man2/signal.2:110 build/C/man7/signal.7:838 build/C/man2/signalfd.2:307 build/C/man3/sigpause.3:56 build/C/man2/sigpending.2:64 build/C/man2/sigprocmask.2:112 build/C/man3/sigqueue.3:114 build/C/man2/sigreturn.2:60 build/C/man3/sigset.3:173 build/C/man3/sigsetops.3:131 build/C/man2/sigsuspend.2:84 build/C/man3/sigvec.3:221 build/C/man3/sigwait.3:80 build/C/man2/sigwaitinfo.2:133 build/C/man3/sysv_signal.3:60 build/C/man2/timer_create.2:193 build/C/man2/timer_delete.2:67 build/C/man2/timer_getoverrun.2:97 build/C/man2/timer_settime.2:207 build/C/man2/timerfd_create.2:371 build/C/man2/tkill.2:116 build/C/man2/wait.2:420 build/C/man2/wait4.2:138
125 #, no-wrap
126 msgid "CONFORMING TO"
127 msgstr ""
128
129 #. type: Plain text
130 #: build/C/man3/bsd_signal.3:70
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:70 build/C/man2/eventfd.2:271 build/C/man2/getitimer.2:158 build/C/man2/kill.2:122 build/C/man2/killpg.2:115 build/C/man3/raise.3:66 build/C/man2/restart_syscall.2:98 build/C/man2/rt_sigqueueinfo.2:178 build/C/man2/s390_runtime_instr.2:84 build/C/man2/sgetmask.2:68 build/C/man2/sigaction.2:680 build/C/man2/sigaltstack.2:158 build/C/man2/signal.2:112 build/C/man2/signalfd.2:312 build/C/man3/sigpause.3:60 build/C/man2/sigpending.2:66 build/C/man2/sigprocmask.2:114 build/C/man3/sigqueue.3:116 build/C/man2/sigreturn.2:64 build/C/man3/sigset.3:190 build/C/man3/sigsetops.3:133 build/C/man2/sigsuspend.2:86 build/C/man3/sigvec.3:227 build/C/man3/sigwait.3:82 build/C/man2/sigwaitinfo.2:135 build/C/man3/sysv_signal.3:62 build/C/man2/timer_create.2:195 build/C/man2/timer_getoverrun.2:99 build/C/man2/tkill.2:122 build/C/man2/wait.2:422 build/C/man2/wait4.2:147
138 #, no-wrap
139 msgid "NOTES"
140 msgstr ""
141
142 #. type: Plain text
143 #: build/C/man3/bsd_signal.3:76
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:87
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:94 build/C/man3/sysv_signal.3:87
157 msgid ""
158 "The use of I<sighandler_t> is a GNU extension; this type is defined only if "
159 "the B<_GNU_SOURCE> feature test macro is defined."
160 msgstr ""
161
162 #. type: SH
163 #: build/C/man3/bsd_signal.3:94 build/C/man2/eventfd.2:417 build/C/man2/getitimer.2:239 build/C/man3/gsignal.3:103 build/C/man2/kill.2:170 build/C/man2/killpg.2:134 build/C/man2/pause.2:59 build/C/man2/prctl.2:979 build/C/man3/profil.3:81 build/C/man3/psignal.3:113 build/C/man3/raise.3:77 build/C/man2/restart_syscall.2:123 build/C/man2/rt_sigqueueinfo.2:188 build/C/man2/s390_runtime_instr.2:88 build/C/man2/sgetmask.2:80 build/C/man2/sigaction.2:793 build/C/man2/sigaltstack.2:232 build/C/man7/sigevent.7:132 build/C/man3/siginterrupt.3:96 build/C/man2/signal.2:278 build/C/man7/signal.7:850 build/C/man2/signalfd.2:433 build/C/man3/sigpause.3:98 build/C/man2/sigpending.2:87 build/C/man2/sigprocmask.2:144 build/C/man3/sigqueue.3:149 build/C/man2/sigreturn.2:74 build/C/man3/sigset.3:266 build/C/man3/sigsetops.3:171 build/C/man2/sigsuspend.2:108 build/C/man3/sigvec.3:252 build/C/man3/sigwait.3:89 build/C/man2/sigwaitinfo.2:187 build/C/man3/sysv_signal.3:87 build/C/man2/timer_create.2:399 build/C/man2/timer_delete.2:69 build/C/man2/timer_getoverrun.2:131 build/C/man2/timer_settime.2:212 build/C/man2/timerfd_create.2:541 build/C/man2/tkill.2:131 build/C/man2/wait.2:619 build/C/man2/wait4.2:165
164 #, no-wrap
165 msgid "SEE ALSO"
166 msgstr ""
167
168 #. type: Plain text
169 #: build/C/man3/bsd_signal.3:99
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:99 build/C/man2/eventfd.2:428 build/C/man2/getitimer.2:246 build/C/man3/gsignal.3:107 build/C/man2/kill.2:180 build/C/man2/killpg.2:140 build/C/man2/pause.2:64 build/C/man2/prctl.2:982 build/C/man3/profil.3:86 build/C/man3/psignal.3:118 build/C/man3/raise.3:84 build/C/man2/restart_syscall.2:131 build/C/man2/rt_sigqueueinfo.2:196 build/C/man2/s390_runtime_instr.2:91 build/C/man2/sgetmask.2:83 build/C/man2/sigaction.2:813 build/C/man2/sigaltstack.2:239 build/C/man7/sigevent.7:142 build/C/man3/siginterrupt.3:98 build/C/man2/signal.2:297 build/C/man7/signal.7:884 build/C/man2/signalfd.2:446 build/C/man3/sigpause.3:106 build/C/man2/sigpending.2:95 build/C/man2/sigprocmask.2:155 build/C/man3/sigqueue.3:157 build/C/man2/sigreturn.2:80 build/C/man3/sigset.3:276 build/C/man3/sigsetops.3:176 build/C/man2/sigsuspend.2:118 build/C/man3/sigvec.3:262 build/C/man3/sigwait.3:97 build/C/man2/sigwaitinfo.2:199 build/C/man3/sysv_signal.3:92 build/C/man2/timer_create.2:414 build/C/man2/timer_delete.2:75 build/C/man2/timer_getoverrun.2:141 build/C/man2/timer_settime.2:216 build/C/man2/timerfd_create.2:553 build/C/man2/tkill.2:136 build/C/man2/wait.2:631 build/C/man2/wait4.2:172
175 #, no-wrap
176 msgid "COLOPHON"
177 msgstr ""
178
179 #. type: Plain text
180 #: build/C/man3/bsd_signal.3:106 build/C/man2/eventfd.2:435 build/C/man2/getitimer.2:253 build/C/man3/gsignal.3:114 build/C/man2/kill.2:187 build/C/man2/killpg.2:147 build/C/man2/pause.2:71 build/C/man2/prctl.2:989 build/C/man3/profil.3:93 build/C/man3/psignal.3:125 build/C/man3/raise.3:91 build/C/man2/restart_syscall.2:138 build/C/man2/rt_sigqueueinfo.2:203 build/C/man2/s390_runtime_instr.2:98 build/C/man2/sgetmask.2:90 build/C/man2/sigaction.2:820 build/C/man2/sigaltstack.2:246 build/C/man7/sigevent.7:149 build/C/man3/siginterrupt.3:105 build/C/man2/signal.2:304 build/C/man7/signal.7:891 build/C/man2/signalfd.2:453 build/C/man3/sigpause.3:113 build/C/man2/sigpending.2:102 build/C/man2/sigprocmask.2:162 build/C/man3/sigqueue.3:164 build/C/man2/sigreturn.2:87 build/C/man3/sigset.3:283 build/C/man3/sigsetops.3:183 build/C/man2/sigsuspend.2:125 build/C/man3/sigvec.3:269 build/C/man3/sigwait.3:104 build/C/man2/sigwaitinfo.2:206 build/C/man3/sysv_signal.3:99 build/C/man2/timer_create.2:421 build/C/man2/timer_delete.2:82 build/C/man2/timer_getoverrun.2:148 build/C/man2/timer_settime.2:223 build/C/man2/timerfd_create.2:560 build/C/man2/tkill.2:143 build/C/man2/wait.2:638 build/C/man2/wait4.2:179
181 msgid ""
182 "This page is part of release 3.53 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:22
189 #, no-wrap
190 msgid "EVENTFD"
191 msgstr ""
192
193 #. type: TH
194 #: build/C/man2/eventfd.2:22
195 #, no-wrap
196 msgid "2010-08-30"
197 msgstr ""
198
199 #. type: TH
200 #: build/C/man2/eventfd.2:22 build/C/man2/getitimer.2:12 build/C/man2/kill.2:44 build/C/man2/killpg.2:42 build/C/man2/pause.2:30 build/C/man2/prctl.2:52 build/C/man3/profil.3:28 build/C/man2/restart_syscall.2:33 build/C/man2/rt_sigqueueinfo.2:25 build/C/man2/sgetmask.2:26 build/C/man2/sigaction.2:47 build/C/man2/sigaltstack.2:27 build/C/man2/signal.2:36 build/C/man7/signal.7:46 build/C/man2/signalfd.2:20 build/C/man3/sigpause.3:25 build/C/man2/sigpending.2:29 build/C/man2/sigprocmask.2:29 build/C/man3/sigqueue.3:28 build/C/man2/sigreturn.2:29 build/C/man3/sigset.3:26 build/C/man3/sigsetops.3:31 build/C/man2/sigsuspend.2:29 build/C/man3/sigvec.3:26 build/C/man3/sigwait.3:26 build/C/man2/sigwaitinfo.2:25 build/C/man2/timer_create.2:31 build/C/man2/timer_delete.2:26 build/C/man2/timer_getoverrun.2:26 build/C/man2/timer_settime.2:26 build/C/man2/timerfd_create.2:21 build/C/man2/tkill.2:29 build/C/man2/wait.2:49 build/C/man2/wait4.2:33
201 #, no-wrap
202 msgid "Linux"
203 msgstr ""
204
205 #. type: Plain text
206 #: build/C/man2/eventfd.2:25
207 msgid "eventfd - create a file descriptor for event notification"
208 msgstr ""
209
210 #. type: Plain text
211 #: build/C/man2/eventfd.2:27
212 msgid "B<#include E<lt>sys/eventfd.hE<gt>>"
213 msgstr ""
214
215 #. type: Plain text
216 #: build/C/man2/eventfd.2:29
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:39
222 msgid ""
223 "B<eventfd>()  creates an \"eventfd object\" that can be used as an event "
224 "wait/notify mechanism by user-space applications, and by the kernel to "
225 "notify user-space applications of events.  The object contains an unsigned "
226 "64-bit integer (I<uint64_t>)  counter that is maintained by the kernel.  "
227 "This counter is initialized with the value specified in the argument "
228 "I<initval>."
229 msgstr ""
230
231 #. type: Plain text
232 #: build/C/man2/eventfd.2:44
233 msgid ""
234 "The following values may be bitwise ORed in I<flags> to change the behaviour "
235 "of B<eventfd>():"
236 msgstr ""
237
238 #. type: TP
239 #: build/C/man2/eventfd.2:44
240 #, no-wrap
241 msgid "B<EFD_CLOEXEC> (since Linux 2.6.27)"
242 msgstr ""
243
244 #. type: Plain text
245 #: build/C/man2/eventfd.2:54 build/C/man2/signalfd.2:95 build/C/man2/timerfd_create.2:103
246 msgid ""
247 "Set the close-on-exec (B<FD_CLOEXEC>)  flag on the new file descriptor.  See "
248 "the description of the B<O_CLOEXEC> flag in B<open>(2)  for reasons why this "
249 "may be useful."
250 msgstr ""
251
252 #. type: TP
253 #: build/C/man2/eventfd.2:54
254 #, no-wrap
255 msgid "B<EFD_NONBLOCK> (since Linux 2.6.27)"
256 msgstr ""
257
258 #. type: Plain text
259 #: build/C/man2/eventfd.2:62 build/C/man2/signalfd.2:85 build/C/man2/timerfd_create.2:93
260 msgid ""
261 "Set the B<O_NONBLOCK> file status flag on the new open file description.  "
262 "Using this flag saves extra calls to B<fcntl>(2)  to achieve the same "
263 "result."
264 msgstr ""
265
266 #. type: TP
267 #: build/C/man2/eventfd.2:62
268 #, no-wrap
269 msgid "B<EFD_SEMAPHORE> (since Linux 2.6.30)"
270 msgstr ""
271
272 #. type: Plain text
273 #: build/C/man2/eventfd.2:66
274 msgid ""
275 "Provide semaphore-like semantics for reads from the new file descriptor.  "
276 "See below."
277 msgstr ""
278
279 #. type: Plain text
280 #: build/C/man2/eventfd.2:70 build/C/man2/signalfd.2:99
281 msgid ""
282 "In Linux up to version 2.6.26, the I<flags> argument is unused, and must be "
283 "specified as zero."
284 msgstr ""
285
286 #. type: Plain text
287 #: build/C/man2/eventfd.2:76
288 msgid ""
289 "As its return value, B<eventfd>()  returns a new file descriptor that can be "
290 "used to refer to the eventfd object.  The following operations can be "
291 "performed on the file descriptor:"
292 msgstr ""
293
294 #. type: TP
295 #: build/C/man2/eventfd.2:76 build/C/man2/signalfd.2:102 build/C/man2/timerfd_create.2:211
296 #, no-wrap
297 msgid "B<read>(2)"
298 msgstr ""
299
300 #. type: Plain text
301 #: build/C/man2/eventfd.2:86
302 msgid ""
303 "Each successful B<read>(2)  returns an 8-byte integer.  A B<read>(2)  will "
304 "fail with the error B<EINVAL> if the size of the supplied buffer is less "
305 "than 8 bytes."
306 msgstr ""
307
308 #. type: Plain text
309 #: build/C/man2/eventfd.2:91
310 msgid ""
311 "The value returned by B<read>(2)  is in host byte order, i.e., the native "
312 "byte order for integers on the host machine."
313 msgstr ""
314
315 #. type: Plain text
316 #: build/C/man2/eventfd.2:98
317 msgid ""
318 "The semantics of B<read>(2)  depend on whether the eventfd counter currently "
319 "has a nonzero value and whether the B<EFD_SEMAPHORE> flag was specified when "
320 "creating the eventfd file descriptor:"
321 msgstr ""
322
323 #. type: IP
324 #: build/C/man2/eventfd.2:99 build/C/man2/eventfd.2:106 build/C/man2/eventfd.2:113 build/C/man2/eventfd.2:158 build/C/man2/eventfd.2:168 build/C/man2/eventfd.2:178 build/C/man2/prctl.2:836 build/C/man2/prctl.2:841 build/C/man2/prctl.2:846 build/C/man2/prctl.2:856 build/C/man3/psignal.3:105 build/C/man3/psignal.3:109 build/C/man2/sigaction.2:298 build/C/man2/sigaction.2:313 build/C/man2/sigaction.2:329 build/C/man2/sigaction.2:344 build/C/man2/sigaction.2:391 build/C/man2/sigaction.2:427 build/C/man2/signal.2:68 build/C/man2/signal.2:73 build/C/man2/signal.2:80 build/C/man2/signal.2:224 build/C/man2/signal.2:228 build/C/man2/signal.2:267 build/C/man7/signal.7:149 build/C/man7/signal.7:157 build/C/man7/signal.7:615 build/C/man7/signal.7:617 build/C/man7/signal.7:638 build/C/man7/signal.7:653 build/C/man7/signal.7:657 build/C/man7/signal.7:664 build/C/man7/signal.7:680 build/C/man7/signal.7:686 build/C/man7/signal.7:693 build/C/man7/signal.7:698 build/C/man7/signal.7:717 build/C/man7/signal.7:736 build/C/man7/signal.7:743 build/C/man7/signal.7:752 build/C/man7/signal.7:760 build/C/man7/signal.7:766 build/C/man7/signal.7:771 build/C/man7/signal.7:791 build/C/man7/signal.7:810 build/C/man7/signal.7:813 build/C/man7/signal.7:816 build/C/man7/signal.7:819 build/C/man7/signal.7:824 build/C/man7/signal.7:830 build/C/man7/signal.7:834 build/C/man3/sigwait.3:62 build/C/man3/sigwait.3:67 build/C/man2/timer_create.2:216 build/C/man2/timer_create.2:219 build/C/man2/timer_create.2:222 build/C/man2/timer_create.2:226 build/C/man2/timer_create.2:229 build/C/man2/timer_create.2:235 build/C/man2/timer_create.2:239
325 #, no-wrap
326 msgid "*"
327 msgstr ""
328
329 #. type: Plain text
330 #: build/C/man2/eventfd.2:106
331 msgid ""
332 "If B<EFD_SEMAPHORE> was not specified and the eventfd counter has a nonzero "
333 "value, then a B<read>(2)  returns 8 bytes containing that value, and the "
334 "counter's value is reset to zero."
335 msgstr ""
336
337 #. type: Plain text
338 #: build/C/man2/eventfd.2:113
339 msgid ""
340 "If B<EFD_SEMAPHORE> was specified and the eventfd counter has a nonzero "
341 "value, then a B<read>(2)  returns 8 bytes containing the value 1, and the "
342 "counter's value is decremented by 1."
343 msgstr ""
344
345 #. type: Plain text
346 #: build/C/man2/eventfd.2:123
347 msgid ""
348 "If the eventfd counter is zero at the time of the call to B<read>(2), then "
349 "the call either blocks until the counter becomes nonzero (at which time, the "
350 "B<read>(2)  proceeds as described above)  or fails with the error B<EAGAIN> "
351 "if the file descriptor has been made nonblocking."
352 msgstr ""
353
354 #. type: TP
355 #: build/C/man2/eventfd.2:124
356 #, no-wrap
357 msgid "B<write>(2)"
358 msgstr ""
359
360 #. type: Plain text
361 #: build/C/man2/eventfd.2:141
362 msgid ""
363 "A B<write>(2)  call adds the 8-byte integer value supplied in its buffer to "
364 "the counter.  The maximum value that may be stored in the counter is the "
365 "largest unsigned 64-bit value minus 1 (i.e., 0xfffffffffffffffe).  If the "
366 "addition would cause the counter's value to exceed the maximum, then the "
367 "B<write>(2)  either blocks until a B<read>(2)  is performed on the file "
368 "descriptor, or fails with the error B<EAGAIN> if the file descriptor has "
369 "been made nonblocking."
370 msgstr ""
371
372 #. type: Plain text
373 #: build/C/man2/eventfd.2:148
374 msgid ""
375 "A B<write>(2)  will fail with the error B<EINVAL> if the size of the "
376 "supplied buffer is less than 8 bytes, or if an attempt is made to write the "
377 "value 0xffffffffffffffff."
378 msgstr ""
379
380 #. type: TP
381 #: build/C/man2/eventfd.2:148 build/C/man2/signalfd.2:140 build/C/man2/timerfd_create.2:244
382 #, no-wrap
383 msgid "B<poll>(2), B<select>(2) (and similar)"
384 msgstr ""
385
386 #. type: Plain text
387 #: build/C/man2/eventfd.2:157
388 msgid ""
389 "The returned file descriptor supports B<poll>(2)  (and analogously "
390 "B<epoll>(7))  and B<select>(2), as follows:"
391 msgstr ""
392
393 #. type: Plain text
394 #: build/C/man2/eventfd.2:168
395 msgid ""
396 "The file descriptor is readable (the B<select>(2)  I<readfds> argument; the "
397 "B<poll>(2)  B<POLLIN> flag)  if the counter has a value greater than 0."
398 msgstr ""
399
400 #. type: Plain text
401 #: build/C/man2/eventfd.2:178
402 msgid ""
403 "The file descriptor is writable (the B<select>(2)  I<writefds> argument; the "
404 "B<poll>(2)  B<POLLOUT> flag)  if it is possible to write a value of at least "
405 "\"1\" without blocking."
406 msgstr ""
407
408 #. type: Plain text
409 #: build/C/man2/eventfd.2:198
410 msgid ""
411 "If an overflow of the counter value was detected, then B<select>(2)  "
412 "indicates the file descriptor as being both readable and writable, and "
413 "B<poll>(2)  returns a B<POLLERR> event.  As noted above, B<write>(2)  can "
414 "never overflow the counter.  However an overflow can occur if 2^64 eventfd "
415 "\"signal posts\" were performed by the KAIO subsystem (theoretically "
416 "possible, but practically unlikely).  If an overflow has occurred, then "
417 "B<read>(2)  will return that maximum I<uint64_t> value (i.e., "
418 "0xffffffffffffffff)."
419 msgstr ""
420
421 #. type: Plain text
422 #: build/C/man2/eventfd.2:205
423 msgid ""
424 "The eventfd file descriptor also supports the other file-descriptor "
425 "multiplexing APIs: B<pselect>(2)  and B<ppoll>(2)."
426 msgstr ""
427
428 #. type: TP
429 #: build/C/man2/eventfd.2:205 build/C/man2/signalfd.2:160 build/C/man2/timerfd_create.2:262
430 #, no-wrap
431 msgid "B<close>(2)"
432 msgstr ""
433
434 #. type: Plain text
435 #: build/C/man2/eventfd.2:210
436 msgid ""
437 "When the file descriptor is no longer required it should be closed.  When "
438 "all file descriptors associated with the same eventfd object have been "
439 "closed, the resources for object are freed by the kernel."
440 msgstr ""
441
442 #. type: Plain text
443 #: build/C/man2/eventfd.2:222
444 msgid ""
445 "A copy of the file descriptor created by B<eventfd>()  is inherited by the "
446 "child produced by B<fork>(2).  The duplicate file descriptor is associated "
447 "with the same eventfd object.  File descriptors created by B<eventfd>()  are "
448 "preserved across B<execve>(2), unless the close-on-exec flag has been set."
449 msgstr ""
450
451 #. type: Plain text
452 #: build/C/man2/eventfd.2:229
453 msgid ""
454 "On success, B<eventfd>()  returns a new eventfd file descriptor.  On error, "
455 "-1 is returned and I<errno> is set to indicate the error."
456 msgstr ""
457
458 #. type: TP
459 #: build/C/man2/eventfd.2:230 build/C/man2/getitimer.2:135 build/C/man2/kill.2:105 build/C/man2/killpg.2:95 build/C/man2/prctl.2:798 build/C/man2/prctl.2:803 build/C/man2/prctl.2:815 build/C/man2/prctl.2:820 build/C/man2/prctl.2:829 build/C/man2/prctl.2:869 build/C/man2/rt_sigqueueinfo.2:141 build/C/man2/s390_runtime_instr.2:66 build/C/man2/sigaction.2:670 build/C/man2/sigaltstack.2:142 build/C/man3/siginterrupt.3:84 build/C/man2/signal.2:106 build/C/man2/signalfd.2:271 build/C/man2/signalfd.2:279 build/C/man2/sigprocmask.2:107 build/C/man3/sigqueue.3:98 build/C/man3/sigsetops.3:127 build/C/man3/sigwait.3:75 build/C/man2/sigwaitinfo.2:129 build/C/man2/timer_create.2:179 build/C/man2/timer_delete.2:61 build/C/man2/timer_getoverrun.2:91 build/C/man2/timer_settime.2:191 build/C/man2/timer_settime.2:199 build/C/man2/timerfd_create.2:305 build/C/man2/timerfd_create.2:313 build/C/man2/timerfd_create.2:349 build/C/man2/timerfd_create.2:356 build/C/man2/timerfd_create.2:362 build/C/man2/tkill.2:100 build/C/man2/wait.2:415
460 #, no-wrap
461 msgid "B<EINVAL>"
462 msgstr ""
463
464 #. type: Plain text
465 #: build/C/man2/eventfd.2:234
466 msgid "An unsupported value was specified in I<flags>."
467 msgstr ""
468
469 #. type: TP
470 #: build/C/man2/eventfd.2:234 build/C/man2/signalfd.2:286 build/C/man2/timerfd_create.2:320
471 #, no-wrap
472 msgid "B<EMFILE>"
473 msgstr ""
474
475 #. type: Plain text
476 #: build/C/man2/eventfd.2:237
477 msgid "The per-process limit on open file descriptors has been reached."
478 msgstr ""
479
480 #. type: TP
481 #: build/C/man2/eventfd.2:237 build/C/man2/signalfd.2:289 build/C/man2/timerfd_create.2:323
482 #, no-wrap
483 msgid "B<ENFILE>"
484 msgstr ""
485
486 #. type: Plain text
487 #: build/C/man2/eventfd.2:241 build/C/man2/signalfd.2:293 build/C/man2/timerfd_create.2:327
488 msgid "The system-wide limit on the total number of open files has been reached."
489 msgstr ""
490
491 #. type: TP
492 #: build/C/man2/eventfd.2:241 build/C/man2/signalfd.2:293 build/C/man2/timerfd_create.2:327
493 #, no-wrap
494 msgid "B<ENODEV>"
495 msgstr ""
496
497 #. type: Plain text
498 #: build/C/man2/eventfd.2:249 build/C/man2/signalfd.2:296 build/C/man2/timerfd_create.2:330
499 msgid "Could not mount (internal) anonymous inode device."
500 msgstr ""
501
502 #. type: TP
503 #: build/C/man2/eventfd.2:249 build/C/man2/s390_runtime_instr.2:73 build/C/man2/sigaltstack.2:147 build/C/man2/signalfd.2:296 build/C/man2/timer_create.2:187 build/C/man2/timerfd_create.2:330
504 #, no-wrap
505 msgid "B<ENOMEM>"
506 msgstr ""
507
508 #. type: Plain text
509 #: build/C/man2/eventfd.2:253
510 msgid "There was insufficient memory to create a new eventfd file descriptor."
511 msgstr ""
512
513 #. type: SH
514 #: build/C/man2/eventfd.2:253 build/C/man2/prctl.2:960 build/C/man3/psignal.3:95 build/C/man2/restart_syscall.2:92 build/C/man2/rt_sigqueueinfo.2:169 build/C/man2/s390_runtime_instr.2:79 build/C/man2/signalfd.2:299 build/C/man3/sigqueue.3:112 build/C/man2/timer_create.2:191 build/C/man2/timer_delete.2:65 build/C/man2/timer_getoverrun.2:95 build/C/man2/timer_settime.2:205 build/C/man2/timerfd_create.2:368 build/C/man2/tkill.2:111
515 #, no-wrap
516 msgid "VERSIONS"
517 msgstr ""
518
519 #.  eventfd() is in glibc 2.7, but reportedly does not build
520 #. type: Plain text
521 #: build/C/man2/eventfd.2:266
522 msgid ""
523 "B<eventfd>()  is available on Linux since kernel 2.6.22.  Working support is "
524 "provided in glibc since version 2.8.  The B<eventfd2>()  system call (see "
525 "NOTES) is available on Linux since kernel 2.6.27.  Since version 2.9, the "
526 "glibc B<eventfd>()  wrapper will employ the B<eventfd2>()  system call, if "
527 "it is supported by the kernel."
528 msgstr ""
529
530 #. type: Plain text
531 #: build/C/man2/eventfd.2:271
532 msgid "B<eventfd>()  and B<eventfd2>()  are Linux-specific."
533 msgstr ""
534
535 #. type: Plain text
536 #: build/C/man2/eventfd.2:279
537 msgid ""
538 "Applications can use an eventfd file descriptor instead of a pipe (see "
539 "B<pipe>(2))  in all cases where a pipe is used simply to signal events.  The "
540 "kernel overhead of an eventfd file descriptor is much lower than that of a "
541 "pipe, and only one file descriptor is required (versus the two required for "
542 "a pipe)."
543 msgstr ""
544
545 #.  or eventually syslets/threadlets
546 #. type: Plain text
547 #: build/C/man2/eventfd.2:285
548 msgid ""
549 "When used in the kernel, an eventfd file descriptor can provide a bridge "
550 "from kernel to user space, allowing, for example, functionalities like KAIO "
551 "(kernel AIO)  to signal to a file descriptor that some operation is "
552 "complete."
553 msgstr ""
554
555 #. type: Plain text
556 #: build/C/man2/eventfd.2:302
557 msgid ""
558 "A key point about an eventfd file descriptor is that it can be monitored "
559 "just like any other file descriptor using B<select>(2), B<poll>(2), or "
560 "B<epoll>(7).  This means that an application can simultaneously monitor the "
561 "readiness of \"traditional\" files and the readiness of other kernel "
562 "mechanisms that support the eventfd interface.  (Without the B<eventfd>()  "
563 "interface, these mechanisms could not be multiplexed via B<select>(2), "
564 "B<poll>(2), or B<epoll>(7).)"
565 msgstr ""
566
567 #. type: SS
568 #: build/C/man2/eventfd.2:302 build/C/man2/signalfd.2:336
569 #, no-wrap
570 msgid "Underlying Linux system calls"
571 msgstr ""
572
573 #. type: Plain text
574 #: build/C/man2/eventfd.2:316
575 msgid ""
576 "There are two underlying Linux system calls: B<eventfd>()  and the more "
577 "recent B<eventfd2>().  The former system call does not implement a I<flags> "
578 "argument.  The latter system call implements the I<flags> values described "
579 "above.  The glibc wrapper function will use B<eventfd2>()  where it is "
580 "available."
581 msgstr ""
582
583 #. type: SS
584 #: build/C/man2/eventfd.2:316
585 #, no-wrap
586 msgid "Additional glibc features"
587 msgstr ""
588
589 #. type: Plain text
590 #: build/C/man2/eventfd.2:320
591 msgid ""
592 "The GNU C library defines an additional type, and two functions that attempt "
593 "to abstract some of the details of reading and writing on an eventfd file "
594 "descriptor:"
595 msgstr ""
596
597 #. type: Plain text
598 #: build/C/man2/eventfd.2:324
599 #, no-wrap
600 msgid "typedef uint64_t eventfd_t;\n"
601 msgstr ""
602
603 #. type: Plain text
604 #: build/C/man2/eventfd.2:327
605 #, no-wrap
606 msgid ""
607 "int eventfd_read(int fd, eventfd_t *value);\n"
608 "int eventfd_write(int fd, eventfd_t value);\n"
609 msgstr ""
610
611 #. type: Plain text
612 #: build/C/man2/eventfd.2:334
613 msgid ""
614 "The functions perform the read and write operations on an eventfd file "
615 "descriptor, returning 0 if the correct number of bytes was transferred, or "
616 "-1 otherwise."
617 msgstr ""
618
619 #. type: SH
620 #: build/C/man2/eventfd.2:334 build/C/man2/sigaction.2:790 build/C/man2/sigaltstack.2:215 build/C/man2/signalfd.2:360 build/C/man3/sigwait.3:86 build/C/man2/timer_create.2:253 build/C/man2/timer_getoverrun.2:128 build/C/man2/timer_settime.2:209 build/C/man2/timerfd_create.2:379 build/C/man2/wait.2:536
621 #, no-wrap
622 msgid "EXAMPLE"
623 msgstr ""
624
625 #. type: Plain text
626 #: build/C/man2/eventfd.2:343
627 msgid ""
628 "The following program creates an eventfd file descriptor and then forks to "
629 "create a child process.  While the parent briefly sleeps, the child writes "
630 "each of the integers supplied in the program's command-line arguments to the "
631 "eventfd file descriptor.  When the parent has finished sleeping, it reads "
632 "from the eventfd file descriptor."
633 msgstr ""
634
635 #. type: Plain text
636 #: build/C/man2/eventfd.2:345
637 msgid "The following shell session shows a sample run of the program:"
638 msgstr ""
639
640 #. type: Plain text
641 #: build/C/man2/eventfd.2:357
642 #, no-wrap
643 msgid ""
644 "$B< ./a.out 1 2 4 7 14>\n"
645 "Child writing 1 to efd\n"
646 "Child writing 2 to efd\n"
647 "Child writing 4 to efd\n"
648 "Child writing 7 to efd\n"
649 "Child writing 14 to efd\n"
650 "Child completed write loop\n"
651 "Parent about to read\n"
652 "Parent read 28 (0x1c) from efd\n"
653 msgstr ""
654
655 #. type: SS
656 #: build/C/man2/eventfd.2:359 build/C/man2/signalfd.2:383 build/C/man2/timer_create.2:284 build/C/man2/timerfd_create.2:407 build/C/man2/wait.2:571
657 #, no-wrap
658 msgid "Program source"
659 msgstr ""
660
661 #. type: Plain text
662 #: build/C/man2/eventfd.2:367
663 #, no-wrap
664 msgid ""
665 "#include E<lt>sys/eventfd.hE<gt>\n"
666 "#include E<lt>unistd.hE<gt>\n"
667 "#include E<lt>stdlib.hE<gt>\n"
668 "#include E<lt>stdio.hE<gt>\n"
669 "#include E<lt>stdint.hE<gt>             /* Definition of uint64_t */\n"
670 msgstr ""
671
672 #. type: Plain text
673 #: build/C/man2/eventfd.2:370 build/C/man2/signalfd.2:394
674 #, no-wrap
675 msgid ""
676 "#define handle_error(msg) \\e\n"
677 "    do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
678 msgstr ""
679
680 #. type: Plain text
681 #: build/C/man2/eventfd.2:377
682 #, no-wrap
683 msgid ""
684 "int\n"
685 "main(int argc, char *argv[])\n"
686 "{\n"
687 "    int efd, j;\n"
688 "    uint64_t u;\n"
689 "    ssize_t s;\n"
690 msgstr ""
691
692 #. type: Plain text
693 #: build/C/man2/eventfd.2:382
694 #, no-wrap
695 msgid ""
696 "    if (argc E<lt> 2) {\n"
697 "        fprintf(stderr, \"Usage: %s E<lt>numE<gt>...\\en\", argv[0]);\n"
698 "        exit(EXIT_FAILURE);\n"
699 "    }\n"
700 msgstr ""
701
702 #. type: Plain text
703 #: build/C/man2/eventfd.2:386
704 #, no-wrap
705 msgid ""
706 "    efd = eventfd(0, 0);\n"
707 "    if (efd == -1)\n"
708 "        handle_error(\"eventfd\");\n"
709 msgstr ""
710
711 #. type: Plain text
712 #: build/C/man2/eventfd.2:398
713 #, no-wrap
714 msgid ""
715 "    switch (fork()) {\n"
716 "    case 0:\n"
717 "        for (j = 1; j E<lt> argc; j++) {\n"
718 "            printf(\"Child writing %s to efd\\en\", argv[j]);\n"
719 "            u = strtoull(argv[j], NULL, 0);\n"
720 "                    /* strtoull() allows various bases */\n"
721 "            s = write(efd, &u, sizeof(uint64_t));\n"
722 "            if (s != sizeof(uint64_t))\n"
723 "                handle_error(\"write\");\n"
724 "        }\n"
725 "        printf(\"Child completed write loop\\en\");\n"
726 msgstr ""
727
728 #. type: Plain text
729 #: build/C/man2/eventfd.2:400
730 #, no-wrap
731 msgid "        exit(EXIT_SUCCESS);\n"
732 msgstr ""
733
734 #. type: Plain text
735 #: build/C/man2/eventfd.2:403
736 #, no-wrap
737 msgid ""
738 "    default:\n"
739 "        sleep(2);\n"
740 msgstr ""
741
742 #. type: Plain text
743 #: build/C/man2/eventfd.2:411
744 #, no-wrap
745 msgid ""
746 "        printf(\"Parent about to read\\en\");\n"
747 "        s = read(efd, &u, sizeof(uint64_t));\n"
748 "        if (s != sizeof(uint64_t))\n"
749 "            handle_error(\"read\");\n"
750 "        printf(\"Parent read %llu (0x%llx) from efd\\en\",\n"
751 "                (unsigned long long) u, (unsigned long long) u);\n"
752 "        exit(EXIT_SUCCESS);\n"
753 msgstr ""
754
755 #. type: Plain text
756 #: build/C/man2/eventfd.2:416
757 #, no-wrap
758 msgid ""
759 "    case -1:\n"
760 "        handle_error(\"fork\");\n"
761 "    }\n"
762 "}\n"
763 msgstr ""
764
765 #. type: Plain text
766 #: build/C/man2/eventfd.2:428
767 msgid ""
768 "B<futex>(2), B<pipe>(2), B<poll>(2), B<read>(2), B<select>(2), "
769 "B<signalfd>(2), B<timerfd_create>(2), B<write>(2), B<epoll>(7), "
770 "B<sem_overview>(7)"
771 msgstr ""
772
773 #. type: TH
774 #: build/C/man2/getitimer.2:12
775 #, no-wrap
776 msgid "GETITIMER"
777 msgstr ""
778
779 #. type: TH
780 #: build/C/man2/getitimer.2:12
781 #, no-wrap
782 msgid "2012-10-01"
783 msgstr ""
784
785 #. type: Plain text
786 #: build/C/man2/getitimer.2:15
787 msgid "getitimer, setitimer - get or set value of an interval timer"
788 msgstr ""
789
790 #. type: Plain text
791 #: build/C/man2/getitimer.2:18
792 #, no-wrap
793 msgid "B<#include E<lt>sys/time.hE<gt>>\n"
794 msgstr ""
795
796 #. type: Plain text
797 #: build/C/man2/getitimer.2:20
798 #, no-wrap
799 msgid "B<int getitimer(int >I<which>B<, struct itimerval *>I<curr_value>B<);>\n"
800 msgstr ""
801
802 #. type: Plain text
803 #: build/C/man2/getitimer.2:23
804 #, no-wrap
805 msgid ""
806 "B<int setitimer(int >I<which>B<, const struct itimerval *>I<new_value>B<,>\n"
807 "B<              struct itimerval *>I<old_value>B<);>\n"
808 msgstr ""
809
810 #. type: Plain text
811 #: build/C/man2/getitimer.2:29
812 msgid ""
813 "The system provides each process with three interval timers, each "
814 "decrementing in a distinct time domain.  When any timer expires, a signal is "
815 "sent to the process, and the timer (potentially) restarts."
816 msgstr ""
817
818 #. type: TP
819 #: build/C/man2/getitimer.2:29
820 #, no-wrap
821 msgid "B<ITIMER_REAL>"
822 msgstr ""
823
824 #. type: Plain text
825 #: build/C/man2/getitimer.2:34
826 msgid "decrements in real time, and delivers B<SIGALRM> upon expiration."
827 msgstr ""
828
829 #. type: TP
830 #: build/C/man2/getitimer.2:34
831 #, no-wrap
832 msgid "B<ITIMER_VIRTUAL>"
833 msgstr ""
834
835 #. type: Plain text
836 #: build/C/man2/getitimer.2:39
837 msgid ""
838 "decrements only when the process is executing, and delivers B<SIGVTALRM> "
839 "upon expiration."
840 msgstr ""
841
842 #. type: TP
843 #: build/C/man2/getitimer.2:39
844 #, no-wrap
845 msgid "B<ITIMER_PROF>"
846 msgstr ""
847
848 #. type: Plain text
849 #: build/C/man2/getitimer.2:49
850 msgid ""
851 "decrements both when the process executes and when the system is executing "
852 "on behalf of the process.  Coupled with B<ITIMER_VIRTUAL>, this timer is "
853 "usually used to profile the time spent by the application in user and kernel "
854 "space.  B<SIGPROF> is delivered upon expiration."
855 msgstr ""
856
857 #. type: Plain text
858 #: build/C/man2/getitimer.2:51
859 msgid "Timer values are defined by the following structures:"
860 msgstr ""
861
862 #. type: Plain text
863 #: build/C/man2/getitimer.2:59
864 #, no-wrap
865 msgid ""
866 "struct itimerval {\n"
867 "    struct timeval it_interval; /* next value */\n"
868 "    struct timeval it_value;    /* current value */\n"
869 "};\n"
870 msgstr ""
871
872 #. type: Plain text
873 #: build/C/man2/getitimer.2:64
874 #, no-wrap
875 msgid ""
876 "struct timeval {\n"
877 "    time_t      tv_sec;         /* seconds */\n"
878 "    suseconds_t tv_usec;        /* microseconds */\n"
879 "};\n"
880 msgstr ""
881
882 #. type: Plain text
883 #: build/C/man2/getitimer.2:86
884 msgid ""
885 "The function B<getitimer>()  fills the structure pointed to by I<curr_value> "
886 "with the current setting for the timer specified by I<which> (one of "
887 "B<ITIMER_REAL>, B<ITIMER_VIRTUAL>, or B<ITIMER_PROF>).  The element "
888 "I<it_value> is set to the amount of time remaining on the timer, or zero if "
889 "the timer is disabled.  Similarly, I<it_interval> is set to the reset value."
890 msgstr ""
891
892 #. type: Plain text
893 #: build/C/man2/getitimer.2:94
894 msgid ""
895 "The function B<setitimer>()  sets the specified timer to the value in "
896 "I<new_value>.  If I<old_value> is non-NULL, the old value of the timer is "
897 "stored there."
898 msgstr ""
899
900 #. type: Plain text
901 #: build/C/man2/getitimer.2:104
902 msgid ""
903 "Timers decrement from I<it_value> to zero, generate a signal, and reset to "
904 "I<it_interval>.  A timer which is set to zero (I<it_value> is zero or the "
905 "timer expires and I<it_interval> is zero) stops."
906 msgstr ""
907
908 #. type: Plain text
909 #: build/C/man2/getitimer.2:110
910 msgid ""
911 "Both I<tv_sec> and I<tv_usec> are significant in determining the duration of "
912 "a timer."
913 msgstr ""
914
915 #. type: Plain text
916 #: build/C/man2/getitimer.2:122
917 msgid ""
918 "Timers will never expire before the requested time, but may expire some "
919 "(short) time afterward, which depends on the system timer resolution and on "
920 "the system load; see B<time>(7).  (But see BUGS below.)  Upon expiration, a "
921 "signal will be generated and the timer reset.  If the timer expires while "
922 "the process is active (always true for B<ITIMER_VIRTUAL>)  the signal will "
923 "be delivered immediately when generated.  Otherwise the delivery will be "
924 "offset by a small time dependent on the system loading."
925 msgstr ""
926
927 #. type: Plain text
928 #: build/C/man2/getitimer.2:127 build/C/man2/killpg.2:94 build/C/man2/tkill.2:99
929 msgid ""
930 "On success, zero is returned.  On error, -1 is returned, and I<errno> is set "
931 "appropriately."
932 msgstr ""
933
934 #. type: TP
935 #: build/C/man2/getitimer.2:128 build/C/man2/prctl.2:794 build/C/man2/sigaction.2:666 build/C/man2/sigaltstack.2:138 build/C/man2/sigpending.2:60 build/C/man2/sigprocmask.2:100 build/C/man2/sigsuspend.2:77 build/C/man2/timer_settime.2:184 build/C/man2/timerfd_create.2:342
936 #, no-wrap
937 msgid "B<EFAULT>"
938 msgstr ""
939
940 #. type: Plain text
941 #: build/C/man2/getitimer.2:135 build/C/man2/timerfd_create.2:349
942 msgid "I<new_value>, I<old_value>, or I<curr_value> is not valid a pointer."
943 msgstr ""
944
945 #. type: Plain text
946 #: build/C/man2/getitimer.2:148
947 msgid ""
948 "I<which> is not one of B<ITIMER_REAL>, B<ITIMER_VIRTUAL>, or B<ITIMER_PROF>; "
949 "or (since Linux 2.6.22) one of the I<tv_usec> fields in the structure "
950 "pointed to by I<new_value> contains a value outside the range 0 to 999999."
951 msgstr ""
952
953 #. type: Plain text
954 #: build/C/man2/getitimer.2:158
955 msgid ""
956 "POSIX.1-2001, SVr4, 4.4BSD (this call first appeared in 4.2BSD).  "
957 "POSIX.1-2008 marks B<getitimer>()  and B<setitimer>()  obsolete, "
958 "recommending the use of the POSIX timers API (B<timer_gettime>(2), "
959 "B<timer_settime>(2), etc.) instead."
960 msgstr ""
961
962 #. type: Plain text
963 #: build/C/man2/getitimer.2:164
964 msgid ""
965 "A child created via B<fork>(2)  does not inherit its parent's interval "
966 "timers.  Interval timers are preserved across an B<execve>(2)."
967 msgstr ""
968
969 #. type: Plain text
970 #: build/C/man2/getitimer.2:174
971 msgid ""
972 "POSIX.1 leaves the interaction between B<setitimer>()  and the three "
973 "interfaces B<alarm>(2), B<sleep>(3), and B<usleep>(3)  unspecified."
974 msgstr ""
975
976 #. type: Plain text
977 #: build/C/man2/getitimer.2:176
978 msgid "The standards are silent on the meaning of the call:"
979 msgstr ""
980
981 #. type: Plain text
982 #: build/C/man2/getitimer.2:178
983 #, no-wrap
984 msgid "    setitimer(which, NULL, &old_value);\n"
985 msgstr ""
986
987 #. type: Plain text
988 #: build/C/man2/getitimer.2:181
989 msgid ""
990 "Many systems (Solaris, the BSDs, and perhaps others)  treat this as "
991 "equivalent to:"
992 msgstr ""
993
994 #. type: Plain text
995 #: build/C/man2/getitimer.2:183
996 #, no-wrap
997 msgid "    getitimer(which, &old_value);\n"
998 msgstr ""
999
1000 #. type: Plain text
1001 #: build/C/man2/getitimer.2:189
1002 msgid ""
1003 "In Linux, this is treated as being equivalent to a call in which the "
1004 "I<new_value> fields are zero; that is, the timer is disabled.  I<Don't use "
1005 "this Linux misfeature>: it is nonportable and unnecessary."
1006 msgstr ""
1007
1008 #. type: SH
1009 #: build/C/man2/getitimer.2:189 build/C/man2/kill.2:160 build/C/man3/profil.3:72 build/C/man3/psignal.3:101 build/C/man2/sigaction.2:781 build/C/man2/signalfd.2:352 build/C/man2/sigpending.2:81 build/C/man3/sigset.3:232 build/C/man2/timer_getoverrun.2:115 build/C/man2/timerfd_create.2:373 build/C/man2/wait.2:521
1010 #, no-wrap
1011 msgid "BUGS"
1012 msgstr ""
1013
1014 #. type: Plain text
1015 #: build/C/man2/getitimer.2:198
1016 msgid ""
1017 "The generation and delivery of a signal are distinct, and only one instance "
1018 "of each of the signals listed above may be pending for a process.  Under "
1019 "very heavy loading, an B<ITIMER_REAL> timer may expire before the signal "
1020 "from a previous expiration has been delivered.  The second signal in such an "
1021 "event will be lost."
1022 msgstr ""
1023
1024 #. type: Plain text
1025 #: build/C/man2/getitimer.2:213
1026 msgid ""
1027 "On Linux kernels before 2.6.16, timer values are represented in jiffies.  If "
1028 "a request is made set a timer with a value whose jiffies representation "
1029 "exceeds B<MAX_SEC_IN_JIFFIES> (defined in I<include/linux/jiffies.h>), then "
1030 "the timer is silently truncated to this ceiling value.  On Linux/i386 "
1031 "(where, since Linux 2.6.13, the default jiffy is 0.004 seconds), this means "
1032 "that the ceiling value for a timer is approximately 99.42 days.  Since Linux "
1033 "2.6.16, the kernel uses a different internal representation for times, and "
1034 "this ceiling is removed."
1035 msgstr ""
1036
1037 #.  4 Jul 2005: It looks like this bug may remain in 2.4.x.
1038 #.      http://lkml.org/lkml/2005/7/1/165
1039 #. type: Plain text
1040 #: build/C/man2/getitimer.2:220
1041 msgid ""
1042 "On certain systems (including i386), Linux kernels before version 2.6.12 "
1043 "have a bug which will produce premature timer expirations of up to one jiffy "
1044 "under some circumstances.  This bug is fixed in kernel 2.6.12."
1045 msgstr ""
1046
1047 #.  Bugzilla report 25 Apr 2006:
1048 #.  http://bugzilla.kernel.org/show_bug.cgi?id=6443
1049 #.  "setitimer() should reject noncanonical arguments"
1050 #. type: Plain text
1051 #: build/C/man2/getitimer.2:239
1052 msgid ""
1053 "POSIX.1-2001 says that B<setitimer>()  should fail if a I<tv_usec> value is "
1054 "specified that is outside of the range 0 to 999999.  However, in kernels up "
1055 "to and including 2.6.21, Linux does not give an error, but instead silently "
1056 "adjusts the corresponding seconds value for the timer.  From kernel 2.6.22 "
1057 "onward, this nonconformance has been repaired: an improper I<tv_usec> value "
1058 "results in an B<EINVAL> error."
1059 msgstr ""
1060
1061 #. type: Plain text
1062 #: build/C/man2/getitimer.2:246
1063 msgid ""
1064 "B<gettimeofday>(2), B<sigaction>(2), B<signal>(2), B<timer_create>(2), "
1065 "B<timerfd_create>(2), B<time>(7)"
1066 msgstr ""
1067
1068 #. type: TH
1069 #: build/C/man3/gsignal.3:27
1070 #, no-wrap
1071 msgid "GSIGNAL"
1072 msgstr ""
1073
1074 #. type: TH
1075 #: build/C/man3/gsignal.3:27 build/C/man3/profil.3:28
1076 #, no-wrap
1077 msgid "2007-07-26"
1078 msgstr ""
1079
1080 #. type: Plain text
1081 #: build/C/man3/gsignal.3:30
1082 msgid "gsignal, ssignal - software signal facility"
1083 msgstr ""
1084
1085 #. type: Plain text
1086 #: build/C/man3/gsignal.3:33 build/C/man2/kill.2:52 build/C/man3/psignal.3:36 build/C/man3/raise.3:35 build/C/man2/sigaction.2:53 build/C/man3/siginterrupt.3:37 build/C/man3/sigpause.3:31 build/C/man3/sigwait.3:32 build/C/man2/sigwaitinfo.2:31
1087 #, no-wrap
1088 msgid "B<#include E<lt>signal.hE<gt>>\n"
1089 msgstr ""
1090
1091 #. type: Plain text
1092 #: build/C/man3/gsignal.3:35
1093 #, no-wrap
1094 msgid "B<typedef void (*sighandler_t)(int);>\n"
1095 msgstr ""
1096
1097 #. type: Plain text
1098 #: build/C/man3/gsignal.3:37
1099 #, no-wrap
1100 msgid "B<int gsignal(int >I<signum>B<);>\n"
1101 msgstr ""
1102
1103 #. type: Plain text
1104 #: build/C/man3/gsignal.3:39
1105 #, no-wrap
1106 msgid "B<sighandler_t ssignal(int >I<signum>B<, sighandler_t >I<action>B<);>\n"
1107 msgstr ""
1108
1109 #. type: Plain text
1110 #: build/C/man3/gsignal.3:44 build/C/man2/kill.2:59 build/C/man2/killpg.2:53 build/C/man3/profil.3:42 build/C/man3/psignal.3:46 build/C/man2/sigaction.2:61 build/C/man2/sigaltstack.2:38 build/C/man3/siginterrupt.3:44 build/C/man2/sigpending.2:40 build/C/man2/sigprocmask.2:41 build/C/man3/sigqueue.3:39 build/C/man3/sigset.3:45 build/C/man3/sigsetops.3:51 build/C/man2/sigsuspend.2:40 build/C/man3/sigvec.3:45 build/C/man3/sigwait.3:39 build/C/man2/sigwaitinfo.2:41 build/C/man2/timer_create.2:48 build/C/man2/timer_delete.2:41 build/C/man2/timer_getoverrun.2:41 build/C/man2/timer_settime.2:45 build/C/man2/wait.2:67 build/C/man2/wait4.2:53
1111 msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
1112 msgstr ""
1113
1114 #. type: Plain text
1115 #: build/C/man3/gsignal.3:49
1116 msgid "B<gsignal>(), B<ssignal>(): _SVID_SOURCE"
1117 msgstr ""
1118
1119 #. type: Plain text
1120 #: build/C/man3/gsignal.3:57
1121 msgid ""
1122 "Don't use these functions under Linux.  Due to a historical mistake, under "
1123 "Linux these functions are aliases for B<raise>(3)  and B<signal>(2), "
1124 "respectively."
1125 msgstr ""
1126
1127 #. type: Plain text
1128 #: build/C/man3/gsignal.3:95
1129 msgid ""
1130 "Elsewhere, on System V-like systems, these functions implement software "
1131 "signaling, entirely independent of the classical B<signal>(2)  and "
1132 "B<kill>(2)  functions.  The function B<ssignal>()  defines the action to "
1133 "take when the software signal with number I<signum> is raised using the "
1134 "function B<gsignal>(), and returns the previous such action or B<SIG_DFL>.  "
1135 "The function B<gsignal>()  does the following: if no action (or the action "
1136 "B<SIG_DFL>)  was specified for I<signum>, then it does nothing and returns "
1137 "0.  If the action B<SIG_IGN> was specified for I<signum>, then it does "
1138 "nothing and returns 1.  Otherwise, it resets the action to B<SIG_DFL> and "
1139 "calls the action function with argument I<signum>, and returns the value "
1140 "returned by that function.  The range of possible values I<signum> varies "
1141 "(often 1-15 or 1-17)."
1142 msgstr ""
1143
1144 #. type: Plain text
1145 #: build/C/man3/gsignal.3:103
1146 msgid ""
1147 "These functions are available under AIX, DG/UX, HP-UX, SCO, Solaris, Tru64.  "
1148 "They are called obsolete under most of these systems, and are broken under "
1149 "Linux libc and glibc.  Some systems also have B<gsignal_r>()  and "
1150 "B<ssignal_r>()."
1151 msgstr ""
1152
1153 #. type: Plain text
1154 #: build/C/man3/gsignal.3:107
1155 msgid "B<kill>(2), B<signal>(2), B<raise>(3)"
1156 msgstr ""
1157
1158 #. type: TH
1159 #: build/C/man2/kill.2:44
1160 #, no-wrap
1161 msgid "KILL"
1162 msgstr ""
1163
1164 #. type: TH
1165 #: build/C/man2/kill.2:44
1166 #, no-wrap
1167 msgid "2013-02-05"
1168 msgstr ""
1169
1170 #. type: Plain text
1171 #: build/C/man2/kill.2:47
1172 msgid "kill - send signal to a process"
1173 msgstr ""
1174
1175 #. type: Plain text
1176 #: build/C/man2/kill.2:50
1177 #, no-wrap
1178 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
1179 msgstr ""
1180
1181 #. type: Plain text
1182 #: build/C/man2/kill.2:54
1183 #, no-wrap
1184 msgid "B<int kill(pid_t >I<pid>B<, int >I<sig>B<);>\n"
1185 msgstr ""
1186
1187 #. type: Plain text
1188 #: build/C/man2/kill.2:64
1189 msgid "B<kill>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
1190 msgstr ""
1191
1192 #. type: Plain text
1193 #: build/C/man2/kill.2:70
1194 msgid ""
1195 "The B<kill>()  system call can be used to send any signal to any process "
1196 "group or process."
1197 msgstr ""
1198
1199 #. type: Plain text
1200 #: build/C/man2/kill.2:73
1201 msgid ""
1202 "If I<pid> is positive, then signal I<sig> is sent to the process with the ID "
1203 "specified by I<pid>."
1204 msgstr ""
1205
1206 #. type: Plain text
1207 #: build/C/man2/kill.2:76
1208 msgid ""
1209 "If I<pid> equals 0, then I<sig> is sent to every process in the process "
1210 "group of the calling process."
1211 msgstr ""
1212
1213 #. type: Plain text
1214 #: build/C/man2/kill.2:80
1215 msgid ""
1216 "If I<pid> equals -1, then I<sig> is sent to every process for which the "
1217 "calling process has permission to send signals, except for process 1 "
1218 "(I<init>), but see below."
1219 msgstr ""
1220
1221 #. type: Plain text
1222 #: build/C/man2/kill.2:83
1223 msgid ""
1224 "If I<pid> is less than -1, then I<sig> is sent to every process in the "
1225 "process group whose ID is I<-pid>."
1226 msgstr ""
1227
1228 #. type: Plain text
1229 #: build/C/man2/kill.2:88
1230 msgid ""
1231 "If I<sig> is 0, then no signal is sent, but error checking is still "
1232 "performed; this can be used to check for the existence of a process ID or "
1233 "process group ID."
1234 msgstr ""
1235
1236 #. type: Plain text
1237 #: build/C/man2/kill.2:99 build/C/man2/killpg.2:89
1238 msgid ""
1239 "For a process to have permission to send a signal it must either be "
1240 "privileged (under Linux: have the B<CAP_KILL> capability), or the real or "
1241 "effective user ID of the sending process must equal the real or saved "
1242 "set-user-ID of the target process.  In the case of B<SIGCONT> it suffices "
1243 "when the sending and receiving processes belong to the same session."
1244 msgstr ""
1245
1246 #. type: Plain text
1247 #: build/C/man2/kill.2:104
1248 msgid ""
1249 "On success (at least one signal was sent), zero is returned.  On error, -1 "
1250 "is returned, and I<errno> is set appropriately."
1251 msgstr ""
1252
1253 #. type: Plain text
1254 #: build/C/man2/kill.2:108
1255 msgid "An invalid signal was specified."
1256 msgstr ""
1257
1258 #. type: TP
1259 #: build/C/man2/kill.2:108 build/C/man2/killpg.2:99 build/C/man2/prctl.2:879 build/C/man2/prctl.2:891 build/C/man2/prctl.2:901 build/C/man2/prctl.2:909 build/C/man2/rt_sigqueueinfo.2:148 build/C/man2/sigaltstack.2:151 build/C/man3/sigqueue.3:102 build/C/man2/tkill.2:103
1260 #, no-wrap
1261 msgid "B<EPERM>"
1262 msgstr ""
1263
1264 #. type: Plain text
1265 #: build/C/man2/kill.2:112 build/C/man2/killpg.2:103
1266 msgid ""
1267 "The process does not have permission to send the signal to any of the target "
1268 "processes."
1269 msgstr ""
1270
1271 #. type: TP
1272 #: build/C/man2/kill.2:112 build/C/man2/killpg.2:103 build/C/man2/killpg.2:107 build/C/man2/rt_sigqueueinfo.2:156 build/C/man3/sigqueue.3:108 build/C/man2/tkill.2:108
1273 #, no-wrap
1274 msgid "B<ESRCH>"
1275 msgstr ""
1276
1277 #. type: Plain text
1278 #: build/C/man2/kill.2:120
1279 msgid ""
1280 "The pid or process group does not exist.  Note that an existing process "
1281 "might be a zombie, a process which already committed termination, but has "
1282 "not yet been B<wait>(2)ed for."
1283 msgstr ""
1284
1285 #. type: Plain text
1286 #: build/C/man2/kill.2:122 build/C/man2/pause.2:59 build/C/man2/wait.2:422
1287 msgid "SVr4, 4.3BSD, POSIX.1-2001."
1288 msgstr ""
1289
1290 #. type: Plain text
1291 #: build/C/man2/kill.2:130
1292 msgid ""
1293 "The only signals that can be sent to process ID 1, the I<init> process, are "
1294 "those for which I<init> has explicitly installed signal handlers.  This is "
1295 "done to assure the system is not brought down accidentally."
1296 msgstr ""
1297
1298 #. type: Plain text
1299 #: build/C/man2/kill.2:136
1300 msgid ""
1301 "POSIX.1-2001 requires that I<kill(-1,sig)> send I<sig> to all processes that "
1302 "the calling process may send signals to, except possibly for some "
1303 "implementation-defined system processes.  Linux allows a process to signal "
1304 "itself, but on Linux the call I<kill(-1,sig)> does not signal the calling "
1305 "process."
1306 msgstr ""
1307
1308 #. type: Plain text
1309 #: build/C/man2/kill.2:146
1310 msgid ""
1311 "POSIX.1-2001 requires that if a process sends a signal to itself, and the "
1312 "sending thread does not have the signal blocked, and no other thread has it "
1313 "unblocked or is waiting for it in B<sigwait>(3), at least one unblocked "
1314 "signal must be delivered to the sending thread before the B<kill>()  "
1315 "returns."
1316 msgstr ""
1317
1318 #. type: SS
1319 #: build/C/man2/kill.2:146 build/C/man3/sigpause.3:77 build/C/man2/wait.2:476
1320 #, no-wrap
1321 msgid "Linux notes"
1322 msgstr ""
1323
1324 #.  In the 0.* kernels things chopped and changed quite
1325 #.  a bit - MTK, 24 Jul 02
1326 #. type: Plain text
1327 #: build/C/man2/kill.2:160
1328 msgid ""
1329 "Across different kernel versions, Linux has enforced different rules for the "
1330 "permissions required for an unprivileged process to send a signal to another "
1331 "process.  In kernels 1.0 to 1.2.2, a signal could be sent if the effective "
1332 "user ID of the sender matched that of the receiver, or the real user ID of "
1333 "the sender matched that of the receiver.  From kernel 1.2.3 until 1.3.77, a "
1334 "signal could be sent if the effective user ID of the sender matched either "
1335 "the real or effective user ID of the receiver.  The current rules, which "
1336 "conform to POSIX.1-2001, were adopted in kernel 1.3.78."
1337 msgstr ""
1338
1339 #. type: Plain text
1340 #: build/C/man2/kill.2:170
1341 msgid ""
1342 "In 2.6 kernels up to and including 2.6.7, there was a bug that meant that "
1343 "when sending signals to a process group, B<kill>()  failed with the error "
1344 "B<EPERM> if the caller did not have permission to send the signal to I<any> "
1345 "(rather than I<all>) of the members of the process group.  Notwithstanding "
1346 "this error return, the signal was still delivered to all of the processes "
1347 "for which the caller had permission to signal."
1348 msgstr ""
1349
1350 #. type: Plain text
1351 #: build/C/man2/kill.2:180
1352 msgid ""
1353 "B<_exit>(2), B<killpg>(2), B<signal>(2), B<tkill>(2), B<exit>(3), "
1354 "B<sigqueue>(3), B<capabilities>(7), B<credentials>(7), B<signal>(7)"
1355 msgstr ""
1356
1357 #. type: TH
1358 #: build/C/man2/killpg.2:42
1359 #, no-wrap
1360 msgid "KILLPG"
1361 msgstr ""
1362
1363 #. type: TH
1364 #: build/C/man2/killpg.2:42 build/C/man3/sigset.3:26
1365 #, no-wrap
1366 msgid "2010-09-20"
1367 msgstr ""
1368
1369 #. type: Plain text
1370 #: build/C/man2/killpg.2:45
1371 msgid "killpg - send signal to a process group"
1372 msgstr ""
1373
1374 #. type: Plain text
1375 #: build/C/man2/killpg.2:49
1376 msgid "B<int killpg(int >I<pgrp>B<, int >I<sig>B<);>"
1377 msgstr ""
1378
1379 #. type: TP
1380 #: build/C/man2/killpg.2:55
1381 #, no-wrap
1382 msgid "B<killpg>():"
1383 msgstr ""
1384
1385 #. type: Plain text
1386 #: build/C/man2/killpg.2:59 build/C/man2/sigaltstack.2:46 build/C/man3/siginterrupt.3:51 build/C/man2/wait4.2:60
1387 msgid ""
1388 "_BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
1389 "_XOPEN_SOURCE_EXTENDED"
1390 msgstr ""
1391
1392 #. type: Plain text
1393 #: build/C/man2/killpg.2:69
1394 msgid ""
1395 "B<killpg>()  sends the signal I<sig> to the process group I<pgrp>.  See "
1396 "B<signal>(7)  for a list of signals."
1397 msgstr ""
1398
1399 #. type: Plain text
1400 #: build/C/man2/killpg.2:78
1401 msgid ""
1402 "If I<pgrp> is 0, B<killpg>()  sends the signal to the calling process's "
1403 "process group.  (POSIX says: If I<pgrp> is less than or equal to 1, the "
1404 "behavior is undefined.)"
1405 msgstr ""
1406
1407 #. type: Plain text
1408 #: build/C/man2/killpg.2:99
1409 msgid "I<sig> is not a valid signal number."
1410 msgstr ""
1411
1412 #. type: Plain text
1413 #: build/C/man2/killpg.2:107
1414 msgid "No process can be found in the process group specified by I<pgrp>."
1415 msgstr ""
1416
1417 #. type: Plain text
1418 #: build/C/man2/killpg.2:111
1419 msgid ""
1420 "The process group was given as 0 but the sending process does not have a "
1421 "process group."
1422 msgstr ""
1423
1424 #. type: Plain text
1425 #: build/C/man2/killpg.2:115
1426 msgid ""
1427 "SVr4, 4.4BSD (the B<killpg>()  function call first appeared in 4BSD), "
1428 "POSIX.1-2001."
1429 msgstr ""
1430
1431 #. type: Plain text
1432 #: build/C/man2/killpg.2:129
1433 msgid ""
1434 "There are various differences between the permission checking in BSD-type "
1435 "systems and System V-type systems.  See the POSIX rationale for B<kill>().  "
1436 "A difference not mentioned by POSIX concerns the return value B<EPERM>: BSD "
1437 "documents that no signal is sent and B<EPERM> returned when the permission "
1438 "check failed for at least one target process, while POSIX documents B<EPERM> "
1439 "only when the permission check failed for all target processes."
1440 msgstr ""
1441
1442 #. type: Plain text
1443 #: build/C/man2/killpg.2:134
1444 msgid ""
1445 "On Linux, B<killpg>()  is implemented as a library function that makes the "
1446 "call I<kill(-pgrp,\\ sig)>."
1447 msgstr ""
1448
1449 #. type: Plain text
1450 #: build/C/man2/killpg.2:140
1451 msgid ""
1452 "B<getpgrp>(2), B<kill>(2), B<signal>(2), B<capabilities>(7), "
1453 "B<credentials>(7)"
1454 msgstr ""
1455
1456 #. type: TH
1457 #: build/C/man2/pause.2:30
1458 #, no-wrap
1459 msgid "PAUSE"
1460 msgstr ""
1461
1462 #. type: TH
1463 #: build/C/man2/pause.2:30
1464 #, no-wrap
1465 msgid "2008-10-06"
1466 msgstr ""
1467
1468 #. type: Plain text
1469 #: build/C/man2/pause.2:33
1470 msgid "pause - wait for signal"
1471 msgstr ""
1472
1473 #. type: Plain text
1474 #: build/C/man2/pause.2:35
1475 msgid "B<#include E<lt>unistd.hE<gt>>"
1476 msgstr ""
1477
1478 #. type: Plain text
1479 #: build/C/man2/pause.2:37
1480 msgid "B<int pause(void);>"
1481 msgstr ""
1482
1483 #. type: Plain text
1484 #: build/C/man2/pause.2:42
1485 msgid ""
1486 "B<pause>()  causes the calling process (or thread) to sleep until a signal "
1487 "is delivered that either terminates the process or causes the invocation of "
1488 "a signal-catching function."
1489 msgstr ""
1490
1491 #.  .BR ERESTARTNOHAND .
1492 #. type: Plain text
1493 #: build/C/man2/pause.2:53
1494 msgid ""
1495 "B<pause>()  returns only when a signal was caught and the signal-catching "
1496 "function returned.  In this case B<pause>()  returns -1, and I<errno> is set "
1497 "to B<EINTR>."
1498 msgstr ""
1499
1500 #. type: TP
1501 #: build/C/man2/pause.2:54 build/C/man2/sigsuspend.2:81 build/C/man2/sigwaitinfo.2:123 build/C/man2/wait.2:408
1502 #, no-wrap
1503 msgid "B<EINTR>"
1504 msgstr ""
1505
1506 #. type: Plain text
1507 #: build/C/man2/pause.2:57
1508 msgid "a signal was caught and the signal-catching function returned."
1509 msgstr ""
1510
1511 #. type: Plain text
1512 #: build/C/man2/pause.2:64
1513 msgid "B<kill>(2), B<select>(2), B<signal>(2), B<sigsuspend>(2)"
1514 msgstr ""
1515
1516 #. type: TH
1517 #: build/C/man2/prctl.2:52
1518 #, no-wrap
1519 msgid "PRCTL"
1520 msgstr ""
1521
1522 #. type: TH
1523 #: build/C/man2/prctl.2:52
1524 #, no-wrap
1525 msgid "2013-05-21"
1526 msgstr ""
1527
1528 #. type: Plain text
1529 #: build/C/man2/prctl.2:55
1530 msgid "prctl - operations on a process"
1531 msgstr ""
1532
1533 #. type: Plain text
1534 #: build/C/man2/prctl.2:58
1535 #, no-wrap
1536 msgid "B<#include E<lt>sys/prctl.hE<gt>>\n"
1537 msgstr ""
1538
1539 #. type: Plain text
1540 #: build/C/man2/prctl.2:61
1541 #, no-wrap
1542 msgid ""
1543 "B<int prctl(int >I<option>B<, unsigned long >I<arg2>B<, unsigned long "
1544 ">I<arg3>B<,>\n"
1545 "B<          unsigned long >I<arg4>B<, unsigned long >I<arg5>B<);>\n"
1546 msgstr ""
1547
1548 #. type: Plain text
1549 #: build/C/man2/prctl.2:68
1550 msgid ""
1551 "B<prctl>()  is called with a first argument describing what to do (with "
1552 "values defined in I<E<lt>linux/prctl.hE<gt>>), and further arguments with a "
1553 "significance depending on the first one.  The first argument can be:"
1554 msgstr ""
1555
1556 #. type: TP
1557 #: build/C/man2/prctl.2:68
1558 #, no-wrap
1559 msgid "B<PR_CAPBSET_READ> (since Linux 2.6.25)"
1560 msgstr ""
1561
1562 #. type: Plain text
1563 #: build/C/man2/prctl.2:80
1564 msgid ""
1565 "Return (as the function result) 1 if the capability specified in I<arg2> is "
1566 "in the calling thread's capability bounding set, or 0 if it is not.  (The "
1567 "capability constants are defined in I<E<lt>linux/capability.hE<gt>>.)  The "
1568 "capability bounding set dictates whether the process can receive the "
1569 "capability through a file's permitted capability set on a subsequent call to "
1570 "B<execve>(2)."
1571 msgstr ""
1572
1573 #. type: Plain text
1574 #: build/C/man2/prctl.2:85
1575 msgid ""
1576 "If the capability specified in I<arg2> is not valid, then the call fails "
1577 "with the error B<EINVAL>."
1578 msgstr ""
1579
1580 #. type: TP
1581 #: build/C/man2/prctl.2:85
1582 #, no-wrap
1583 msgid "B<PR_CAPBSET_DROP> (since Linux 2.6.25)"
1584 msgstr ""
1585
1586 #. type: Plain text
1587 #: build/C/man2/prctl.2:94
1588 msgid ""
1589 "If the calling thread has the B<CAP_SETPCAP> capability, then drop the "
1590 "capability specified by I<arg2> from the calling thread's capability "
1591 "bounding set.  Any children of the calling thread will inherit the newly "
1592 "reduced bounding set."
1593 msgstr ""
1594
1595 #. type: Plain text
1596 #: build/C/man2/prctl.2:106
1597 msgid ""
1598 "The call fails with the error: B<EPERM> if the calling thread does not have "
1599 "the B<CAP_SETPCAP>; B<EINVAL> if I<arg2> does not represent a valid "
1600 "capability; or B<EINVAL> if file capabilities are not enabled in the kernel, "
1601 "in which case bounding sets are not supported."
1602 msgstr ""
1603
1604 #. type: TP
1605 #: build/C/man2/prctl.2:106
1606 #, no-wrap
1607 msgid "B<PR_SET_CHILD_SUBREAPER> (since Linux 3.4)"
1608 msgstr ""
1609
1610 #.  commit ebec18a6d3aa1e7d84aab16225e87fd25170ec2b
1611 #. type: Plain text
1612 #: build/C/man2/prctl.2:131
1613 msgid ""
1614 "If I<arg2> is nonzero, set the \"child subreaper\" attribute of the calling "
1615 "process; if I<arg2> is zero, unset the attribute.  When a process is marked "
1616 "as a child subreaper, all of the children that it creates, and their "
1617 "descendants, will be marked as having a subreaper.  In effect, a subreaper "
1618 "fulfills the role of B<init>(1)  for its descendant processes.  Upon "
1619 "termination of a process that is orphaned (i.e., its immediate parent has "
1620 "already terminated)  and marked as having a subreaper, the nearest still "
1621 "living ancestor subreaper will receive a B<SIGCHLD> signal and be able to "
1622 "B<wait>(2)  on the process to discover its termination status."
1623 msgstr ""
1624
1625 #. type: TP
1626 #: build/C/man2/prctl.2:131
1627 #, no-wrap
1628 msgid "B<PR_GET_CHILD_SUBREAPER> (since Linux 3.4)"
1629 msgstr ""
1630
1631 #. type: Plain text
1632 #: build/C/man2/prctl.2:136
1633 msgid ""
1634 "Return the \"child subreaper\" setting of the caller, in the location "
1635 "pointed to by I<(int\\ *) arg2>."
1636 msgstr ""
1637
1638 #. type: TP
1639 #: build/C/man2/prctl.2:136
1640 #, no-wrap
1641 msgid "B<PR_SET_DUMPABLE> (since Linux 2.3.20)"
1642 msgstr ""
1643
1644 #.  See http://marc.theaimsgroup.com/?l=linux-kernel&m=115270289030630&w=2
1645 #.  Subject:    Fix prctl privilege escalation (CVE-2006-2451)
1646 #.  From:       Marcel Holtmann <marcel () holtmann ! org>
1647 #.  Date:       2006-07-12 11:12:00
1648 #. type: Plain text
1649 #: build/C/man2/prctl.2:162
1650 msgid ""
1651 "Set the state of the flag determining whether core dumps are produced for "
1652 "the calling process upon delivery of a signal whose default behavior is to "
1653 "produce a core dump.  (Normally, this flag is set for a process by default, "
1654 "but it is cleared when a set-user-ID or set-group-ID program is executed and "
1655 "also by various system calls that manipulate process UIDs and GIDs).  In "
1656 "kernels up to and including 2.6.12, I<arg2> must be either 0 (process is not "
1657 "dumpable) or 1 (process is dumpable).  Between kernels 2.6.13 and 2.6.17, "
1658 "the value 2 was also permitted, which caused any binary which normally would "
1659 "not be dumped to be dumped readable by root only; for security reasons, this "
1660 "feature has been removed.  (See also the description of "
1661 "I</proc/sys/fs/suid_dumpable> in B<proc>(5).)  Processes that are not "
1662 "dumpable can not be attached via B<ptrace>(2)  B<PTRACE_ATTACH>."
1663 msgstr ""
1664
1665 #. type: TP
1666 #: build/C/man2/prctl.2:162
1667 #, no-wrap
1668 msgid "B<PR_GET_DUMPABLE> (since Linux 2.3.20)"
1669 msgstr ""
1670
1671 #.  Since Linux 2.6.13, the dumpable flag can have the value 2,
1672 #.  but in 2.6.13 PR_GET_DUMPABLE simply returns 1 if the dumpable
1673 #.  flags has a nonzero value.  This was fixed in 2.6.14.
1674 #. type: Plain text
1675 #: build/C/man2/prctl.2:169
1676 msgid ""
1677 "Return (as the function result) the current state of the calling process's "
1678 "dumpable flag."
1679 msgstr ""
1680
1681 #. type: TP
1682 #: build/C/man2/prctl.2:169
1683 #, no-wrap
1684 msgid "B<PR_SET_ENDIAN> (since Linux 2.6.18, PowerPC only)"
1685 msgstr ""
1686
1687 #.  Respectively 0, 1, 2
1688 #. type: Plain text
1689 #: build/C/man2/prctl.2:179
1690 msgid ""
1691 "Set the endian-ness of the calling process to the value given in I<arg2>, "
1692 "which should be one of the following: B<PR_ENDIAN_BIG>, B<PR_ENDIAN_LITTLE>, "
1693 "or B<PR_ENDIAN_PPC_LITTLE> (PowerPC pseudo little endian)."
1694 msgstr ""
1695
1696 #. type: TP
1697 #: build/C/man2/prctl.2:179
1698 #, no-wrap
1699 msgid "B<PR_GET_ENDIAN> (since Linux 2.6.18, PowerPC only)"
1700 msgstr ""
1701
1702 #. type: Plain text
1703 #: build/C/man2/prctl.2:184
1704 msgid ""
1705 "Return the endian-ness of the calling process, in the location pointed to by "
1706 "I<(int\\ *) arg2>."
1707 msgstr ""
1708
1709 #. type: TP
1710 #: build/C/man2/prctl.2:184
1711 #, no-wrap
1712 msgid "B<PR_SET_FPEMU> (since Linux 2.4.18, 2.5.9, only on ia64)"
1713 msgstr ""
1714
1715 #. type: Plain text
1716 #: build/C/man2/prctl.2:191
1717 msgid ""
1718 "Set floating-point emulation control bits to I<arg2>.  Pass "
1719 "B<PR_FPEMU_NOPRINT> to silently emulate fp operations accesses, or "
1720 "B<PR_FPEMU_SIGFPE> to not emulate fp operations and send B<SIGFPE> instead."
1721 msgstr ""
1722
1723 #. type: TP
1724 #: build/C/man2/prctl.2:191
1725 #, no-wrap
1726 msgid "B<PR_GET_FPEMU> (since Linux 2.4.18, 2.5.9, only on ia64)"
1727 msgstr ""
1728
1729 #. type: Plain text
1730 #: build/C/man2/prctl.2:196
1731 msgid ""
1732 "Return floating-point emulation control bits, in the location pointed to by "
1733 "I<(int\\ *) arg2>."
1734 msgstr ""
1735
1736 #. type: TP
1737 #: build/C/man2/prctl.2:196
1738 #, no-wrap
1739 msgid "B<PR_SET_FPEXC> (since Linux 2.4.21, 2.5.32, only on PowerPC)"
1740 msgstr ""
1741
1742 #. type: Plain text
1743 #: build/C/man2/prctl.2:209
1744 msgid ""
1745 "Set floating-point exception mode to I<arg2>.  Pass B<PR_FP_EXC_SW_ENABLE> "
1746 "to use FPEXC for FP exception enables, B<PR_FP_EXC_DIV> for floating-point "
1747 "divide by zero, B<PR_FP_EXC_OVF> for floating-point overflow, "
1748 "B<PR_FP_EXC_UND> for floating-point underflow, B<PR_FP_EXC_RES> for "
1749 "floating-point inexact result, B<PR_FP_EXC_INV> for floating-point invalid "
1750 "operation, B<PR_FP_EXC_DISABLED> for FP exceptions disabled, "
1751 "B<PR_FP_EXC_NONRECOV> for async nonrecoverable exception mode, "
1752 "B<PR_FP_EXC_ASYNC> for async recoverable exception mode, "
1753 "B<PR_FP_EXC_PRECISE> for precise exception mode."
1754 msgstr ""
1755
1756 #. type: TP
1757 #: build/C/man2/prctl.2:209
1758 #, no-wrap
1759 msgid "B<PR_GET_FPEXC> (since Linux 2.4.21, 2.5.32, only on PowerPC)"
1760 msgstr ""
1761
1762 #. type: Plain text
1763 #: build/C/man2/prctl.2:214
1764 msgid ""
1765 "Return floating-point exception mode, in the location pointed to by I<(int\\ "
1766 "*) arg2>."
1767 msgstr ""
1768
1769 #. type: TP
1770 #: build/C/man2/prctl.2:214
1771 #, no-wrap
1772 msgid "B<PR_SET_KEEPCAPS> (since Linux 2.2.18)"
1773 msgstr ""
1774
1775 #. type: Plain text
1776 #: build/C/man2/prctl.2:232
1777 msgid ""
1778 "Set the state of the thread's \"keep capabilities\" flag, which determines "
1779 "whether the threads's permitted capability set is cleared when a change is "
1780 "made to the threads's user IDs such that the threads's real UID, effective "
1781 "UID, and saved set-user-ID all become nonzero when at least one of them "
1782 "previously had the value 0.  By default, the permitted capability set is "
1783 "cleared when such a change is made; setting the \"keep capabilities\" flag "
1784 "prevents it from being cleared.  I<arg2> must be either 0 (permitted "
1785 "capabilities are cleared)  or 1 (permitted capabilities are kept).  (A "
1786 "thread's I<effective> capability set is always cleared when such a "
1787 "credential change is made, regardless of the setting of the \"keep "
1788 "capabilities\" flag.)  The \"keep capabilities\" value will be reset to 0 on "
1789 "subsequent calls to B<execve>(2)."
1790 msgstr ""
1791
1792 #. type: TP
1793 #: build/C/man2/prctl.2:232
1794 #, no-wrap
1795 msgid "B<PR_GET_KEEPCAPS> (since Linux 2.2.18)"
1796 msgstr ""
1797
1798 #. type: Plain text
1799 #: build/C/man2/prctl.2:236
1800 msgid ""
1801 "Return (as the function result) the current state of the calling threads's "
1802 "\"keep capabilities\" flag."
1803 msgstr ""
1804
1805 #. type: TP
1806 #: build/C/man2/prctl.2:236
1807 #, no-wrap
1808 msgid "B<PR_SET_NAME> (since Linux 2.6.9)"
1809 msgstr ""
1810
1811 #.  TASK_COMM_LEN in include/linux/sched.h
1812 #. type: Plain text
1813 #: build/C/man2/prctl.2:253
1814 msgid ""
1815 "Set the name of the calling thread, using the value in the location pointed "
1816 "to by I<(char\\ *) arg2>.  The name can be up to 16 bytes long, and should "
1817 "be null-terminated if it contains fewer bytes.  This is the same attribute "
1818 "that can be set via B<pthread_setname_np>(3)  and retrieved using "
1819 "B<pthread_getname_np>(3).  The attribute is likewise accessible via "
1820 "I</proc/self/task/[tid]/comm>, where I<tid> is the name of the calling "
1821 "thread."
1822 msgstr ""
1823
1824 #. type: TP
1825 #: build/C/man2/prctl.2:253
1826 #, no-wrap
1827 msgid "B<PR_GET_NAME> (since Linux 2.6.11)"
1828 msgstr ""
1829
1830 #. type: Plain text
1831 #: build/C/man2/prctl.2:260
1832 msgid ""
1833 "Return the name of the calling thread, in the buffer pointed to by I<(char\\ "
1834 "*) arg2>.  The buffer should allow space for up to 16 bytes; the returned "
1835 "string will be null-terminated if it is shorter than that."
1836 msgstr ""
1837
1838 #. type: TP
1839 #: build/C/man2/prctl.2:260
1840 #, no-wrap
1841 msgid "B<PR_SET_NO_NEW_PRIVS> (since Linux 3.5)"
1842 msgstr ""
1843
1844 #. type: Plain text
1845 #: build/C/man2/prctl.2:283
1846 msgid ""
1847 "Set the calling process's I<no_new_privs> bit to the value in I<arg2>.  With "
1848 "I<no_new_privs> set to 1, B<execve>(2)  promises not to grant privileges to "
1849 "do anything that could not have been done without the B<execve>(2)  call "
1850 "(for example, rendering the set-user-ID and set-group-ID permission bits, "
1851 "and file capabilities non-functional).  Once set, this bit cannot be unset.  "
1852 "The setting of this bit is inherited by children created by B<fork>(2)  and "
1853 "B<clone>(2), and preserved across B<execve>(2)."
1854 msgstr ""
1855
1856 #. type: Plain text
1857 #: build/C/man2/prctl.2:286
1858 msgid ""
1859 "For more information, see the kernel source file "
1860 "I<Documentation/prctl/no_new_privs.txt>."
1861 msgstr ""
1862
1863 #. type: TP
1864 #: build/C/man2/prctl.2:286
1865 #, no-wrap
1866 msgid "B<PR_GET_NO_NEW_PRIVS> (since Linux 3.5)"
1867 msgstr ""
1868
1869 #. type: Plain text
1870 #: build/C/man2/prctl.2:297
1871 msgid ""
1872 "Return the value of the I<no_new_privs> bit for the current process.  A "
1873 "value of 0 indicates the regular B<execve>(2)  behavior.  A value of 1 "
1874 "indicates B<execve>(2)  will operate in the privilege-restricting mode "
1875 "described above."
1876 msgstr ""
1877
1878 #. type: TP
1879 #: build/C/man2/prctl.2:297
1880 #, no-wrap
1881 msgid "B<PR_SET_PDEATHSIG> (since Linux 2.1.57)"
1882 msgstr ""
1883
1884 #. type: Plain text
1885 #: build/C/man2/prctl.2:308
1886 msgid ""
1887 "Set the parent process death signal of the calling process to I<arg2> "
1888 "(either a signal value in the range 1..maxsig, or 0 to clear).  This is the "
1889 "signal that the calling process will get when its parent dies.  This value "
1890 "is cleared for the child of a B<fork>(2)  and (since Linux 2.4.36 / 2.6.23)  "
1891 "when executing a set-user-ID or set-group-ID binary."
1892 msgstr ""
1893
1894 #. type: TP
1895 #: build/C/man2/prctl.2:308
1896 #, no-wrap
1897 msgid "B<PR_GET_PDEATHSIG> (since Linux 2.3.15)"
1898 msgstr ""
1899
1900 #. type: Plain text
1901 #: build/C/man2/prctl.2:313
1902 msgid ""
1903 "Return the current value of the parent process death signal, in the location "
1904 "pointed to by I<(int\\ *) arg2>."
1905 msgstr ""
1906
1907 #. type: TP
1908 #: build/C/man2/prctl.2:313
1909 #, no-wrap
1910 msgid "B<PR_SET_PTRACER> (since Linux 3.4)"
1911 msgstr ""
1912
1913 #.  commit 2d514487faf188938a4ee4fb3464eeecfbdcf8eb
1914 #.  commit bf06189e4d14641c0148bea16e9dd24943862215
1915 #. type: Plain text
1916 #: build/C/man2/prctl.2:338
1917 msgid ""
1918 "This is meaningful only when the Yama LSM is enabled and in mode 1 "
1919 "(\"restricted ptrace\", visible via I</proc/sys/kernel/yama/ptrace_scope>).  "
1920 "When a \"ptracer process ID\" is passed in I<arg2>, the caller is declaring "
1921 "that the ptracer process can B<ptrace>(2)  the calling process as if it were "
1922 "a direct process ancestor.  Each B<PR_SET_PTRACER> operation replaces the "
1923 "previous \"ptracer process ID\".  Employing B<PR_SET_PTRACER> with I<arg2> "
1924 "set to 0 clears the caller's \"ptracer process ID\".  If I<arg2> is "
1925 "B<PR_SET_PTRACER_ANY,> the ptrace restrictions introduced by Yama are "
1926 "effectively disabled for the calling process."
1927 msgstr ""
1928
1929 #. type: Plain text
1930 #: build/C/man2/prctl.2:341
1931 msgid ""
1932 "For further information, see the kernel source file "
1933 "I<Documentation/security/Yama.txt>."
1934 msgstr ""
1935
1936 #. type: TP
1937 #: build/C/man2/prctl.2:341
1938 #, no-wrap
1939 msgid "B<PR_SET_SECCOMP> (since Linux 2.6.23)"
1940 msgstr ""
1941
1942 #.  See http://thread.gmane.org/gmane.linux.kernel/542632
1943 #.  [PATCH 0 of 2] seccomp updates
1944 #.  andrea@cpushare.com
1945 #. type: Plain text
1946 #: build/C/man2/prctl.2:352
1947 msgid ""
1948 "Set the secure computing (seccomp) mode for the calling thread, to limit the "
1949 "available system calls.  The seccomp mode is selected via I<arg2>.  (The "
1950 "seccomp constants are defined in I<E<lt>linux/seccomp.hE<gt>>.)"
1951 msgstr ""
1952
1953 #. type: Plain text
1954 #: build/C/man2/prctl.2:373
1955 msgid ""
1956 "With I<arg2> set to B<SECCOMP_MODE_STRICT> the only system calls that the "
1957 "thread is permitted to make are B<read>(2), B<write>(2), B<_exit>(2), and "
1958 "B<sigreturn>(2).  Other system calls result in the delivery of a B<SIGKILL> "
1959 "signal.  Strict secure computing mode is useful for number-crunching "
1960 "applications that may need to execute untrusted byte code, perhaps obtained "
1961 "by reading from a pipe or socket.  This operation is available only if the "
1962 "kernel is configured with B<CONFIG_SECCOMP> enabled."
1963 msgstr ""
1964
1965 #. type: Plain text
1966 #: build/C/man2/prctl.2:388
1967 msgid ""
1968 "With I<arg2> set to B<SECCOMP_MODE_FILTER> (since Linux 3.5)  the system "
1969 "calls allowed are defined by a pointer to a Berkeley Packet Filter passed in "
1970 "I<arg3>.  This argument is a pointer to I<struct sock_fprog>; it can be "
1971 "designed to filter arbitrary system calls and system call arguments.  This "
1972 "mode is available only if the kernel is configured with "
1973 "B<CONFIG_SECCOMP_FILTER> enabled."
1974 msgstr ""
1975
1976 #. type: Plain text
1977 #: build/C/man2/prctl.2:403
1978 msgid ""
1979 "If B<SECCOMP_MODE_FILTER> filters permit B<fork>(2), then the seccomp mode "
1980 "is inherited by children created by B<fork>(2); if B<execve>(2)  is "
1981 "permitted, then the seccomp mode is preserved across B<execve>(2).  If the "
1982 "filters permit B<prctl>()  calls, then additional filters can be added; they "
1983 "are run in order until the first non-allow result is seen."
1984 msgstr ""
1985
1986 #. type: Plain text
1987 #: build/C/man2/prctl.2:406
1988 msgid ""
1989 "For further information, see the kernel source file "
1990 "I<Documentation/prctl/seccomp_filter.txt>."
1991 msgstr ""
1992
1993 #. type: TP
1994 #: build/C/man2/prctl.2:406
1995 #, no-wrap
1996 msgid "B<PR_GET_SECCOMP> (since Linux 2.6.23)"
1997 msgstr ""
1998
1999 #. type: Plain text
2000 #: build/C/man2/prctl.2:421
2001 msgid ""
2002 "Return the secure computing mode of the calling thread.  If the caller is "
2003 "not in secure computing mode, this operation returns 0; if the caller is in "
2004 "strict secure computing mode, then the B<prctl>()  call will cause a "
2005 "B<SIGKILL> signal to be sent to the process.  If the caller is in filter "
2006 "mode, and this system call is allowed by the seccomp filters, it returns 2.  "
2007 "This operation is available only if the kernel is configured with "
2008 "B<CONFIG_SECCOMP> enabled."
2009 msgstr ""
2010
2011 #. type: TP
2012 #: build/C/man2/prctl.2:421
2013 #, no-wrap
2014 msgid "B<PR_SET_SECUREBITS> (since Linux 2.6.26)"
2015 msgstr ""
2016
2017 #. type: Plain text
2018 #: build/C/man2/prctl.2:427
2019 msgid ""
2020 "Set the \"securebits\" flags of the calling thread to the value supplied in "
2021 "I<arg2>.  See B<capabilities>(7)."
2022 msgstr ""
2023
2024 #. type: TP
2025 #: build/C/man2/prctl.2:427
2026 #, no-wrap
2027 msgid "B<PR_GET_SECUREBITS> (since Linux 2.6.26)"
2028 msgstr ""
2029
2030 #. type: Plain text
2031 #: build/C/man2/prctl.2:433
2032 msgid ""
2033 "Return (as the function result)  the \"securebits\" flags of the calling "
2034 "thread.  See B<capabilities>(7)."
2035 msgstr ""
2036
2037 #. type: TP
2038 #: build/C/man2/prctl.2:433
2039 #, no-wrap
2040 msgid "B<PR_GET_TID_ADDRESS> (since Linux 3.5)"
2041 msgstr ""
2042
2043 #.  commit 300f786b2683f8bb1ec0afb6e1851183a479c86d
2044 #. type: Plain text
2045 #: build/C/man2/prctl.2:448
2046 msgid ""
2047 "Retrieve the I<clear_child_tid> address set by B<set_tid_address>(2)  and "
2048 "the B<clone>(2)  B<CLONE_CHILD_CLEARTID> flag, in the location pointed to by "
2049 "I<(int\\ **)\\ arg2>.  This feature is available only if the kernel is built "
2050 "with the B<CONFIG_CHECKPOINT_RESTORE> option enabled."
2051 msgstr ""
2052
2053 #. type: TP
2054 #: build/C/man2/prctl.2:448
2055 #, no-wrap
2056 msgid "B<PR_SET_TIMERSLACK> (since Linux 2.6.28)"
2057 msgstr ""
2058
2059 #.  See https://lwn.net/Articles/369549/
2060 #.  commit 6976675d94042fbd446231d1bd8b7de71a980ada
2061 #.  It seems that it's not possible to set the timer slack to zero;
2062 #.  The minimum value is 1? Seems a little strange.
2063 #. type: Plain text
2064 #: build/C/man2/prctl.2:467
2065 msgid ""
2066 "Set the current timer slack for the calling thread to the nanosecond value "
2067 "supplied in I<arg2>.  If I<arg2> is less than or equal to zero, reset the "
2068 "current timer slack to the thread's default timer slack value.  The timer "
2069 "slack is used by the kernel to group timer expirations for the calling "
2070 "thread that are close to one another; as a consequence, timer expirations "
2071 "for the thread may be up to the specified number of nanoseconds late (but "
2072 "will never expire early).  Grouping timer expirations can help reduce system "
2073 "power consumption by minimizing CPU wake-ups."
2074 msgstr ""
2075
2076 #.  List obtained by grepping for futex usage in glibc source
2077 #. type: Plain text
2078 #: build/C/man2/prctl.2:487
2079 msgid ""
2080 "The timer expirations affected by timer slack are those set by B<select>(2), "
2081 "B<pselect>(2), B<poll>(2), B<ppoll>(2), B<epoll_wait>(2), B<epoll_pwait>(2), "
2082 "B<clock_nanosleep>(2), B<nanosleep>(2), and B<futex>(2)  (and thus the "
2083 "library functions implemented via futexes, including "
2084 "B<pthread_cond_timedwait>(3), B<pthread_mutex_timedlock>(3), "
2085 "B<pthread_rwlock_timedrdlock>(3), B<pthread_rwlock_timedwrlock>(3), and "
2086 "B<sem_timedwait>(3))."
2087 msgstr ""
2088
2089 #. type: Plain text
2090 #: build/C/man2/prctl.2:491
2091 msgid ""
2092 "Timer slack is not applied to threads that are scheduled under a realtime "
2093 "scheduling policy (see B<sched_setscheduler>(2))."
2094 msgstr ""
2095
2096 #. type: Plain text
2097 #: build/C/man2/prctl.2:508
2098 msgid ""
2099 "Each thread has two associated timer slack values: a \"default\" value, and "
2100 "a \"current\" value.  The current value is the one that governs grouping of "
2101 "timer expirations.  When a new thread is created, the two timer slack values "
2102 "are made the same as the current value of the creating thread.  Thereafter, "
2103 "a thread can adjust its current timer slack value via B<PR_SET_TIMERSLACK> "
2104 "(the default value can't be changed).  The timer slack values of I<init> "
2105 "(PID 1), the ancestor of all processes, are 50,000 nanoseconds (50 "
2106 "microseconds).  The timer slack values are preserved across B<execve>(2)."
2107 msgstr ""
2108
2109 #. type: TP
2110 #: build/C/man2/prctl.2:508
2111 #, no-wrap
2112 msgid "B<PR_GET_TIMERSLACK> (since Linux 2.6.28)"
2113 msgstr ""
2114
2115 #. type: Plain text
2116 #: build/C/man2/prctl.2:511
2117 msgid "Return the current timer slack value of the calling thread."
2118 msgstr ""
2119
2120 #. type: TP
2121 #: build/C/man2/prctl.2:511
2122 #, no-wrap
2123 msgid "B<PR_SET_TIMING> (since Linux 2.6.0-test4)"
2124 msgstr ""
2125
2126 #.  0
2127 #.  1
2128 #.  PR_TIMING_TIMESTAMP doesn't do anything in 2.6.26-rc8,
2129 #.  and looking at the patch history, it appears
2130 #.  that it never did anything.
2131 #. type: Plain text
2132 #: build/C/man2/prctl.2:528
2133 msgid ""
2134 "Set whether to use (normal, traditional) statistical process timing or "
2135 "accurate timestamp-based process timing, by passing B<PR_TIMING_STATISTICAL> "
2136 "or B<PR_TIMING_TIMESTAMP> to I<arg2>.  B<PR_TIMING_TIMESTAMP> is not "
2137 "currently implemented (attempting to set this mode will yield the error "
2138 "B<EINVAL>)."
2139 msgstr ""
2140
2141 #. type: TP
2142 #: build/C/man2/prctl.2:528
2143 #, no-wrap
2144 msgid "B<PR_GET_TIMING> (since Linux 2.6.0-test4)"
2145 msgstr ""
2146
2147 #. type: Plain text
2148 #: build/C/man2/prctl.2:532
2149 msgid ""
2150 "Return (as the function result) which process timing method is currently in "
2151 "use."
2152 msgstr ""
2153
2154 #. type: TP
2155 #: build/C/man2/prctl.2:532
2156 #, no-wrap
2157 msgid "B<PR_TASK_PERF_EVENTS_DISABLE> (since Linux 2.6.31)"
2158 msgstr ""
2159
2160 #. type: Plain text
2161 #: build/C/man2/prctl.2:541
2162 msgid ""
2163 "Disable all performance counters attached to the calling process, regardless "
2164 "of whether the counters were created by this process or another process.  "
2165 "Performance counters created by the calling process for other processes are "
2166 "unaffected.  For more information on performance counters, see the Linux "
2167 "kernel source file I<tools/perf/design.txt>."
2168 msgstr ""
2169
2170 #.  commit 1d1c7ddbfab358445a542715551301b7fc363e28
2171 #. type: Plain text
2172 #: build/C/man2/prctl.2:547
2173 msgid ""
2174 "Originally called B<PR_TASK_PERF_COUNTERS_DISABLE>; renamed (with same "
2175 "numerical value)  in Linux 2.6.32."
2176 msgstr ""
2177
2178 #. type: TP
2179 #: build/C/man2/prctl.2:547
2180 #, no-wrap
2181 msgid "B<PR_TASK_PERF_EVENTS_ENABLE> (since Linux 2.6.31)"
2182 msgstr ""
2183
2184 #. type: Plain text
2185 #: build/C/man2/prctl.2:552
2186 msgid ""
2187 "The converse of B<PR_TASK_PERF_EVENTS_DISABLE>; enable performance counters "
2188 "attached to the calling process."
2189 msgstr ""
2190
2191 #.  commit 1d1c7ddbfab358445a542715551301b7fc363e28
2192 #.  commit cdd6c482c9ff9c55475ee7392ec8f672eddb7be6
2193 #. type: Plain text
2194 #: build/C/man2/prctl.2:559
2195 msgid "Originally called B<PR_TASK_PERF_COUNTERS_ENABLE>; renamed in Linux 2.6.32."
2196 msgstr ""
2197
2198 #. type: TP
2199 #: build/C/man2/prctl.2:559
2200 #, no-wrap
2201 msgid "B<PR_SET_TSC> (since Linux 2.6.26, x86 only)"
2202 msgstr ""
2203
2204 #. type: Plain text
2205 #: build/C/man2/prctl.2:572
2206 msgid ""
2207 "Set the state of the flag determining whether the timestamp counter can be "
2208 "read by the process.  Pass B<PR_TSC_ENABLE> to I<arg2> to allow it to be "
2209 "read, or B<PR_TSC_SIGSEGV> to generate a B<SIGSEGV> when the process tries "
2210 "to read the timestamp counter."
2211 msgstr ""
2212
2213 #. type: TP
2214 #: build/C/man2/prctl.2:572
2215 #, no-wrap
2216 msgid "B<PR_GET_TSC> (since Linux 2.6.26, x86 only)"
2217 msgstr ""
2218
2219 #. type: Plain text
2220 #: build/C/man2/prctl.2:578
2221 msgid ""
2222 "Return the state of the flag determining whether the timestamp counter can "
2223 "be read, in the location pointed to by I<(int\\ *) arg2>."
2224 msgstr ""
2225
2226 #. type: TP
2227 #: build/C/man2/prctl.2:578
2228 #, no-wrap
2229 msgid "B<PR_SET_UNALIGN>"
2230 msgstr ""
2231
2232 #. type: Plain text
2233 #: build/C/man2/prctl.2:588
2234 msgid ""
2235 "(Only on: ia64, since Linux 2.3.48; parisc, since Linux 2.6.15; PowerPC, "
2236 "since Linux 2.6.18; Alpha, since Linux 2.6.22)  Set unaligned access control "
2237 "bits to I<arg2>.  Pass B<PR_UNALIGN_NOPRINT> to silently fix up unaligned "
2238 "user accesses, or B<PR_UNALIGN_SIGBUS> to generate B<SIGBUS> on unaligned "
2239 "user access."
2240 msgstr ""
2241
2242 #. type: TP
2243 #: build/C/man2/prctl.2:588
2244 #, no-wrap
2245 msgid "B<PR_GET_UNALIGN>"
2246 msgstr ""
2247
2248 #. type: Plain text
2249 #: build/C/man2/prctl.2:595
2250 msgid ""
2251 "(see B<PR_SET_UNALIGN> for information on versions and architectures)  "
2252 "Return unaligned access control bits, in the location pointed to by I<(int\\ "
2253 "*) arg2>."
2254 msgstr ""
2255
2256 #. type: TP
2257 #: build/C/man2/prctl.2:595
2258 #, no-wrap
2259 msgid "B<PR_MCE_KILL> (since Linux 2.6.32)"
2260 msgstr ""
2261
2262 #. type: Plain text
2263 #: build/C/man2/prctl.2:635
2264 msgid ""
2265 "Set the machine check memory corruption kill policy for the current thread.  "
2266 "If I<arg2> is B<PR_MCE_KILL_CLEAR>, clear the thread memory corruption kill "
2267 "policy and use the system-wide default.  (The system-wide default is defined "
2268 "by I</proc/sys/vm/memory_failure_early_kill>; see B<proc>(5).)  If I<arg2> "
2269 "is B<PR_MCE_KILL_SET>, use a thread-specific memory corruption kill policy.  "
2270 "In this case, I<arg3> defines whether the policy is I<early kill> "
2271 "(B<PR_MCE_KILL_EARLY>), I<late kill> (B<PR_MCE_KILL_LATE>), or the "
2272 "system-wide default (B<PR_MCE_KILL_DEFAULT>).  Early kill means that the "
2273 "thread receives a B<SIGBUS> signal as soon as hardware memory corruption is "
2274 "detected inside its address space.  In late kill mode, the process is killed "
2275 "only when it accesses a corrupted page.  See B<sigaction>(2)  for more "
2276 "information on the B<SIGBUS> signal.  The policy is inherited by children.  "
2277 "The remaining unused B<prctl>()  arguments must be zero for future "
2278 "compatibility."
2279 msgstr ""
2280
2281 #. type: TP
2282 #: build/C/man2/prctl.2:635
2283 #, no-wrap
2284 msgid "B<PR_MCE_KILL_GET> (since Linux 2.6.32)"
2285 msgstr ""
2286
2287 #. type: Plain text
2288 #: build/C/man2/prctl.2:641
2289 msgid ""
2290 "Return the current per-process machine check kill policy.  All unused "
2291 "B<prctl>()  arguments must be zero."
2292 msgstr ""
2293
2294 #. type: TP
2295 #: build/C/man2/prctl.2:641
2296 #, no-wrap
2297 msgid "B<PR_SET_MM> (since Linux 3.3)"
2298 msgstr ""
2299
2300 #. type: Plain text
2301 #: build/C/man2/prctl.2:661
2302 msgid ""
2303 "Modify certain kernel memory map descriptor fields of the calling process.  "
2304 "Usually these fields are set by the kernel and dynamic loader (see "
2305 "B<ld.so>(8)  for more information) and a regular application should not use "
2306 "this feature.  However, there are cases, such as self-modifying programs, "
2307 "where a program might find it useful to change its own memory map.  This "
2308 "feature is available only if the kernel is built with the "
2309 "B<CONFIG_CHECKPOINT_RESTORE> option enabled.  The calling process must have "
2310 "the B<CAP_SYS_RESOURCE> capability.  The value in I<arg2> is one of the "
2311 "options below, while I<arg3> provides a new value for the option."
2312 msgstr ""
2313
2314 #. type: TP
2315 #: build/C/man2/prctl.2:662
2316 #, no-wrap
2317 msgid "B<PR_SET_MM_START_CODE>"
2318 msgstr ""
2319
2320 #. type: Plain text
2321 #: build/C/man2/prctl.2:671
2322 msgid ""
2323 "Set the address above which the program text can run.  The corresponding "
2324 "memory area must be readable and executable, but not writable or sharable "
2325 "(see B<mprotect>(2)  and B<mmap>(2)  for more information)."
2326 msgstr ""
2327
2328 #. type: TP
2329 #: build/C/man2/prctl.2:671
2330 #, no-wrap
2331 msgid "B<PR_SET_MM_END_CODE>"
2332 msgstr ""
2333
2334 #. type: Plain text
2335 #: build/C/man2/prctl.2:676
2336 msgid ""
2337 "Set the address below which the program text can run.  The corresponding "
2338 "memory area must be readable and executable, but not writable or sharable."
2339 msgstr ""
2340
2341 #. type: TP
2342 #: build/C/man2/prctl.2:676
2343 #, no-wrap
2344 msgid "B<PR_SET_MM_START_DATA>"
2345 msgstr ""
2346
2347 #. type: Plain text
2348 #: build/C/man2/prctl.2:682
2349 msgid ""
2350 "Set the address above which initialized and uninitialized (bss) data are "
2351 "placed.  The corresponding memory area must be readable and writable, but "
2352 "not executable or sharable."
2353 msgstr ""
2354
2355 #. type: TP
2356 #: build/C/man2/prctl.2:682
2357 #, no-wrap
2358 msgid "B<PR_SET_MM_END_DATA>"
2359 msgstr ""
2360
2361 #. type: Plain text
2362 #: build/C/man2/prctl.2:688
2363 msgid ""
2364 "Set the address below which initialized and uninitialized (bss) data are "
2365 "placed.  The corresponding memory area must be readable and writable, but "
2366 "not executable or sharable."
2367 msgstr ""
2368
2369 #. type: TP
2370 #: build/C/man2/prctl.2:688
2371 #, no-wrap
2372 msgid "B<PR_SET_MM_START_STACK>"
2373 msgstr ""
2374
2375 #. type: Plain text
2376 #: build/C/man2/prctl.2:692
2377 msgid ""
2378 "Set the start address of the stack.  The corresponding memory area must be "
2379 "readable and writable."
2380 msgstr ""
2381
2382 #. type: TP
2383 #: build/C/man2/prctl.2:692
2384 #, no-wrap
2385 msgid "B<PR_SET_MM_START_BRK>"
2386 msgstr ""
2387
2388 #. type: Plain text
2389 #: build/C/man2/prctl.2:704
2390 msgid ""
2391 "Set the address above which the program heap can be expanded with B<brk>(2)  "
2392 "call.  The address must be greater than the ending address of the current "
2393 "program data segment.  In addition, the combined size of the resulting heap "
2394 "and the size of the data segment can't exceed the B<RLIMIT_DATA> resource "
2395 "limit (see B<setrlimit>(2))."
2396 msgstr ""
2397
2398 #. type: TP
2399 #: build/C/man2/prctl.2:704
2400 #, no-wrap
2401 msgid "B<PR_SET_MM_BRK>"
2402 msgstr ""
2403
2404 #.  FIXME The following (until ========) is not yet in mainline kernel,
2405 #.  so commented out for the moment.
2406 #.  .TP
2407 #.  .BR PR_SET_MM_ARG_START
2408 #.  Set the address above which the program command line is placed.
2409 #.  .TP
2410 #.  .BR PR_SET_MM_ARG_END
2411 #.  Set the address below which the program command line is placed.
2412 #.  .TP
2413 #.  .BR PR_SET_MM_ENV_START
2414 #.  Set the address above which the program environment is placed.
2415 #.  .TP
2416 #.  .BR PR_SET_MM_ENV_END
2417 #.  Set the address below which the program environment is placed.
2418 #.  .IP
2419 #.  The address passed with
2420 #.  .BR PR_SET_MM_ARG_START ,
2421 #.  .BR PR_SET_MM_ARG_END ,
2422 #.  .BR PR_SET_MM_ENV_START ,
2423 #.  and
2424 #.  .BR PR_SET_MM_ENV_END
2425 #.  should belong to a process stack area.
2426 #.  Thus, the corresponding memory area must be readable, writable, and
2427 #.  (depending on the kernel configuration) have the
2428 #.  .BR MAP_GROWSDOWN
2429 #.  attribute set (see
2430 #.  .BR mmap (2)).
2431 #.  .TP
2432 #.  .BR PR_SET_MM_AUXV
2433 #.  Set a new auxiliary vector.
2434 #.  The
2435 #.  .I arg3
2436 #.  argument should provide the address of the vector.
2437 #.  The
2438 #.  .I arg4
2439 #.  is the size of the vector.
2440 #.  .TP
2441 #.  .BR PR_SET_MM_EXE_FILE
2442 #.  Supersede the
2443 #.  .IR /proc/pid/exe
2444 #.  symbolic link with a new one pointing to a new executable file
2445 #.  identified by the file descriptor provided in
2446 #.  .I arg3
2447 #.  argument.
2448 #.  The file descriptor should be obtained with a regular
2449 #.  .BR open (2)
2450 #.  call.
2451 #.  .IP
2452 #.  To change the symbolic link, one needs to unmap all existing
2453 #.  executable memory areas, including those created by the kernel itself
2454 #.  (for example the kernel usually creates at least one executable
2455 #.  memory area for the ELF
2456 #.  .IR .text
2457 #.  section).
2458 #.  .IP
2459 #.  The second limitation is that such transitions can be done only once
2460 #.  in a process life time.
2461 #.  Any further attempts will be rejected.
2462 #.  This should help system administrators to monitor unusual
2463 #.  symbolic-link transitions over all process running in a system.
2464 #.  ========== END FIXME
2465 #. type: Plain text
2466 #: build/C/man2/prctl.2:773
2467 msgid ""
2468 "Set the current B<brk>(2)  value.  The requirements for the address are the "
2469 "same as for the B<PR_SET_MM_START_BRK> option."
2470 msgstr ""
2471
2472 #. type: Plain text
2473 #: build/C/man2/prctl.2:793
2474 msgid ""
2475 "On success, B<PR_GET_DUMPABLE>, B<PR_GET_KEEPCAPS>, B<PR_GET_NO_NEW_PRIVS>, "
2476 "B<PR_CAPBSET_READ>, B<PR_GET_TIMING>, B<PR_GET_SECUREBITS>, "
2477 "B<PR_MCE_KILL_GET>, and (if it returns)  B<PR_GET_SECCOMP> return the "
2478 "nonnegative values described above.  All other I<option> values return 0 on "
2479 "success.  On error, -1 is returned, and I<errno> is set appropriately."
2480 msgstr ""
2481
2482 #. type: Plain text
2483 #: build/C/man2/prctl.2:798
2484 msgid "I<arg2> is an invalid address."
2485 msgstr ""
2486
2487 #. type: Plain text
2488 #: build/C/man2/prctl.2:803
2489 msgid "The value of I<option> is not recognized."
2490 msgstr ""
2491
2492 #. type: Plain text
2493 #: build/C/man2/prctl.2:815
2494 msgid ""
2495 "I<option> is B<PR_MCE_KILL> or B<PR_MCE_KILL_GET> or B<PR_SET_MM>, and "
2496 "unused B<prctl>()  arguments were not specified as zero."
2497 msgstr ""
2498
2499 #. type: Plain text
2500 #: build/C/man2/prctl.2:820
2501 msgid "I<arg2> is not valid value for this I<option>."
2502 msgstr ""
2503
2504 #. type: Plain text
2505 #: build/C/man2/prctl.2:829
2506 msgid ""
2507 "I<option> is B<PR_SET_SECCOMP> or B<PR_GET_SECCOMP>, and the kernel was not "
2508 "configured with B<CONFIG_SECCOMP>."
2509 msgstr ""
2510
2511 #. type: Plain text
2512 #: build/C/man2/prctl.2:835
2513 msgid "I<option> is B<PR_SET_MM>, and one of the following is true"
2514 msgstr ""
2515
2516 #. type: Plain text
2517 #: build/C/man2/prctl.2:841
2518 msgid "I<arg4> or I<arg5> is nonzero;"
2519 msgstr ""
2520
2521 #. type: Plain text
2522 #: build/C/man2/prctl.2:846
2523 msgid ""
2524 "I<arg3> is greater than B<TASK_SIZE> (the limit on the size of the user "
2525 "address space for this architecture);"
2526 msgstr ""
2527
2528 #. type: Plain text
2529 #: build/C/man2/prctl.2:856
2530 msgid ""
2531 "I<arg2> is B<PR_SET_MM_START_CODE>, B<PR_SET_MM_END_CODE>, "
2532 "B<PR_SET_MM_START_DATA>, B<PR_SET_MM_END_DATA>, or B<PR_SET_MM_START_STACK,> "
2533 "and the permissions of the corresponding memory area are not as required;"
2534 msgstr ""
2535
2536 #. type: Plain text
2537 #: build/C/man2/prctl.2:868
2538 msgid ""
2539 "I<arg2> is B<PR_SET_MM_START_BRK> or B<PR_SET_MM_BRK>, and I<arg3> is less "
2540 "than or equal to the end of the data segment or specifies a value that would "
2541 "cause the B<RLIMIT_DATA> resource limit to be exceeded."
2542 msgstr ""
2543
2544 #. type: Plain text
2545 #: build/C/man2/prctl.2:879
2546 msgid ""
2547 "I<option> is B<PR_SET_PTRACER> and I<arg2> is not 0, B<PR_SET_PTRACER_ANY>, "
2548 "or the PID of an existing process."
2549 msgstr ""
2550
2551 #. type: Plain text
2552 #: build/C/man2/prctl.2:891
2553 msgid ""
2554 "I<option> is B<PR_SET_SECUREBITS>, and the caller does not have the "
2555 "B<CAP_SETPCAP> capability, or tried to unset a \"locked\" flag, or tried to "
2556 "set a flag whose corresponding locked flag was set (see B<capabilities>(7))."
2557 msgstr ""
2558
2559 #. type: Plain text
2560 #: build/C/man2/prctl.2:901
2561 msgid ""
2562 "I<option> is B<PR_SET_KEEPCAPS>, and the callers's "
2563 "B<SECURE_KEEP_CAPS_LOCKED> flag is set (see B<capabilities>(7))."
2564 msgstr ""
2565
2566 #. type: Plain text
2567 #: build/C/man2/prctl.2:909
2568 msgid ""
2569 "I<option> is B<PR_CAPBSET_DROP>, and the caller does not have the "
2570 "B<CAP_SETPCAP> capability."
2571 msgstr ""
2572
2573 #.  FIXME The following (until ========) is not yet in mainline kernel,
2574 #.  so commented out for the moment.
2575 #.  .TP
2576 #.  .B EACCES
2577 #.  .I option
2578 #.  is
2579 #.  .BR PR_SET_MM ,
2580 #.  and
2581 #.  .I arg3
2582 #.  is
2583 #.  .BR PR_SET_MM_EXE_FILE ,
2584 #.  the file is not executable.
2585 #.  .TP
2586 #.  .B EBUSY
2587 #.  .I option
2588 #.  is
2589 #.  .BR PR_SET_MM ,
2590 #.  .I arg3
2591 #.  is
2592 #.  .BR PR_SET_MM_EXE_FILE ,
2593 #.  and this the second attempt to change the
2594 #.  .I /proc/pid/exe
2595 #.  symbolic link, which is prohibited.
2596 #.  .TP
2597 #.  .B EBADF
2598 #.  .I option
2599 #.  is
2600 #.  .BR PR_SET_MM ,
2601 #.  .I arg3
2602 #.  is
2603 #.  .BR PR_SET_MM_EXE_FILE ,
2604 #.  and the file descriptor passed in
2605 #.  .I arg4
2606 #.  is not valid.
2607 #.  ========== END FIXME
2608 #.  The following can't actually happen, because prctl() in
2609 #.  seccomp mode will cause SIGKILL.
2610 #.  .TP
2611 #.  .B EPERM
2612 #.  .I option
2613 #.  is
2614 #.  .BR PR_SET_SECCOMP ,
2615 #.  and secure computing mode is already 1.
2616 #. type: Plain text
2617 #: build/C/man2/prctl.2:960
2618 msgid ""
2619 "I<option> is B<PR_SET_MM>, and the caller does not have the "
2620 "B<CAP_SYS_RESOURCE> capability."
2621 msgstr ""
2622
2623 #.  The library interface was added in glibc 2.0.6
2624 #. type: Plain text
2625 #: build/C/man2/prctl.2:965
2626 msgid "The B<prctl>()  system call was introduced in Linux 2.1.57."
2627 msgstr ""
2628
2629 #. type: Plain text
2630 #: build/C/man2/prctl.2:972
2631 msgid ""
2632 "This call is Linux-specific.  IRIX has a B<prctl>()  system call (also "
2633 "introduced in Linux 2.1.44 as irix_prctl on the MIPS architecture), with "
2634 "prototype"
2635 msgstr ""
2636
2637 #. type: Plain text
2638 #: build/C/man2/prctl.2:974
2639 msgid "B<ptrdiff_t prctl(int >I<option>B<, int >I<arg2>B<, int >I<arg3>B<);>"
2640 msgstr ""
2641
2642 #. type: Plain text
2643 #: build/C/man2/prctl.2:979
2644 msgid ""
2645 "and options to get the maximum number of processes per user, get the maximum "
2646 "number of processors the calling process can use, find out whether a "
2647 "specified process is currently blocked, get or set the maximum stack size, "
2648 "and so on."
2649 msgstr ""
2650
2651 #. type: Plain text
2652 #: build/C/man2/prctl.2:982
2653 msgid "B<signal>(2), B<core>(5)"
2654 msgstr ""
2655
2656 #. type: TH
2657 #: build/C/man3/profil.3:28
2658 #, no-wrap
2659 msgid "PROFIL"
2660 msgstr ""
2661
2662 #. type: Plain text
2663 #: build/C/man3/profil.3:31
2664 msgid "profil - execution time profile"
2665 msgstr ""
2666
2667 #. type: Plain text
2668 #: build/C/man3/profil.3:34
2669 #, no-wrap
2670 msgid "B<#include E<lt>unistd.hE<gt>>\n"
2671 msgstr ""
2672
2673 #. type: Plain text
2674 #: build/C/man3/profil.3:37
2675 #, no-wrap
2676 msgid ""
2677 "B<int profil(unsigned short *>I<buf>B<, size_t >I<bufsiz>B<,>\n"
2678 "B<           size_t >I<offset>B<, unsigned int >I<scale>B<);>\n"
2679 msgstr ""
2680
2681 #. type: Plain text
2682 #: build/C/man3/profil.3:46
2683 msgid "B<profil>(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE\\ E<lt>\\ 500)"
2684 msgstr ""
2685
2686 #. type: Plain text
2687 #: build/C/man3/profil.3:68
2688 msgid ""
2689 "This routine provides a means to find out in what areas your program spends "
2690 "most of its time.  The argument I<buf> points to I<bufsiz> bytes of core.  "
2691 "Every virtual 10 milliseconds, the user's program counter (PC)  is examined: "
2692 "I<offset> is subtracted and the result is multiplied by I<scale> and divided "
2693 "by 65536.  If the resulting value is less than I<bufsiz>, then the "
2694 "corresponding entry in I<buf> is incremented.  If I<buf> is NULL, profiling "
2695 "is disabled."
2696 msgstr ""
2697
2698 #. type: Plain text
2699 #: build/C/man3/profil.3:70
2700 msgid "Zero is always returned."
2701 msgstr ""
2702
2703 #. type: Plain text
2704 #: build/C/man3/profil.3:72
2705 msgid "Similar to a call in SVr4 (but not POSIX.1-2001)."
2706 msgstr ""
2707
2708 #. type: Plain text
2709 #: build/C/man3/profil.3:78
2710 msgid ""
2711 "B<profil>()  cannot be used on a program that also uses B<ITIMER_PROF> "
2712 "interval timers (see B<setitimer>(2))."
2713 msgstr ""
2714
2715 #. type: Plain text
2716 #: build/C/man3/profil.3:81
2717 msgid ""
2718 "True kernel profiling provides more accurate results.  Libc 4.4 contained a "
2719 "kernel patch providing a system call profil."
2720 msgstr ""
2721
2722 #. type: Plain text
2723 #: build/C/man3/profil.3:86
2724 msgid "B<gprof>(1), B<setitimer>(2), B<sigaction>(2), B<signal>(2)"
2725 msgstr ""
2726
2727 #. type: TH
2728 #: build/C/man3/psignal.3:30
2729 #, no-wrap
2730 msgid "PSIGNAL"
2731 msgstr ""
2732
2733 #. type: TH
2734 #: build/C/man3/psignal.3:30
2735 #, no-wrap
2736 msgid "2010-10-06"
2737 msgstr ""
2738
2739 #. type: TH
2740 #: build/C/man3/psignal.3:30 build/C/man3/raise.3:29 build/C/man7/sigevent.7:26
2741 #, no-wrap
2742 msgid "GNU"
2743 msgstr ""
2744
2745 #. type: Plain text
2746 #: build/C/man3/psignal.3:33
2747 msgid "psignal, psiginfo - print signal message"
2748 msgstr ""
2749
2750 #. type: Plain text
2751 #: build/C/man3/psignal.3:39
2752 #, no-wrap
2753 msgid ""
2754 "B<void psignal(int >I<sig>B<, const char *>I<s>B<);>\n"
2755 "B<void psiginfo(const siginfo_t *>I<pinfo>B<, const char *>I<s>B<);>\n"
2756 msgstr ""
2757
2758 #. type: Plain text
2759 #: build/C/man3/psignal.3:41
2760 #, no-wrap
2761 msgid "B<extern const char *const >I<sys_siglist>B<[];>\n"
2762 msgstr ""
2763
2764 #. type: Plain text
2765 #: build/C/man3/psignal.3:50
2766 msgid "B<psignal>(): _SVID_SOURCE || _BSD_SOURCE"
2767 msgstr ""
2768
2769 #. type: Plain text
2770 #: build/C/man3/psignal.3:53
2771 msgid ""
2772 "B<psiginfo>(): _XOPEN_SOURCE\\ E<gt>=\\ 700 || _POSIX_C_SOURCE\\ E<gt>=\\ "
2773 "200809L"
2774 msgstr ""
2775
2776 #. type: Plain text
2777 #: build/C/man3/psignal.3:56
2778 msgid "I<sys_siglist>: _BSD_SOURCE"
2779 msgstr ""
2780
2781 #. type: Plain text
2782 #: build/C/man3/psignal.3:65
2783 msgid ""
2784 "The B<psignal>()  function displays a message on I<stderr> consisting of the "
2785 "string I<s>, a colon, a space, a string describing the signal number I<sig>, "
2786 "and a trailing newline.  If the string I<s> is NULL or empty, the colon and "
2787 "space are omitted.  If I<sig> is invalid, the message displayed will "
2788 "indicate an unknown signal."
2789 msgstr ""
2790
2791 #. type: Plain text
2792 #: build/C/man3/psignal.3:86
2793 msgid ""
2794 "The B<psiginfo>()  function is like B<psignal>(), except that it displays "
2795 "information about the signal described by I<pinfo>, which should point to a "
2796 "valid I<siginfo_t> structure.  As well as the signal description, "
2797 "B<psiginfo>()  displays information about the origin of the signal, and "
2798 "other information relevant to the signal (e.g., the relevant memory address "
2799 "for hardware-generated signals, the child process ID for B<SIGCHLD>, and the "
2800 "user ID and process ID of the sender, for signals set using B<kill>(2)  or "
2801 "B<sigqueue>(3))."
2802 msgstr ""
2803
2804 #. type: Plain text
2805 #: build/C/man3/psignal.3:89
2806 msgid ""
2807 "The array I<sys_siglist> holds the signal description strings indexed by "
2808 "signal number."
2809 msgstr ""
2810
2811 #. type: Plain text
2812 #: build/C/man3/psignal.3:95
2813 msgid "The B<psignal>()  and B<psiginfo>()  functions return no value."
2814 msgstr ""
2815
2816 #. type: Plain text
2817 #: build/C/man3/psignal.3:99
2818 msgid "The B<psiginfo>()  function was added to glibc in version 2.10."
2819 msgstr ""
2820
2821 #. type: Plain text
2822 #: build/C/man3/psignal.3:101
2823 msgid "POSIX.1-2008, 4.3BSD."
2824 msgstr ""
2825
2826 #. type: Plain text
2827 #: build/C/man3/psignal.3:105
2828 msgid "In glibc versions up to 2.12, B<psiginfo>()  had the following bugs:"
2829 msgstr ""
2830
2831 #.  FIXME http://sourceware.org/bugzilla/show_bug.cgi?id=12107
2832 #.  Reportedly now fixed; check glibc 2.13
2833 #. type: Plain text
2834 #: build/C/man3/psignal.3:109
2835 msgid "In some circumstances, a trailing newline is not printed."
2836 msgstr ""
2837
2838 #.  FIXME http://sourceware.org/bugzilla/show_bug.cgi?id=12108
2839 #.  Reportedly now fixed; check glibc 2.13
2840 #. type: Plain text
2841 #: build/C/man3/psignal.3:113
2842 msgid "Additional details are not displayed for real-time signals."
2843 msgstr ""
2844
2845 #. type: Plain text
2846 #: build/C/man3/psignal.3:118
2847 msgid "B<sigaction>(2), B<perror>(3), B<strsignal>(3), B<signal>(7)"
2848 msgstr ""
2849
2850 #. type: TH
2851 #: build/C/man3/raise.3:29
2852 #, no-wrap
2853 msgid "RAISE"
2854 msgstr ""
2855
2856 #. type: TH
2857 #: build/C/man3/raise.3:29
2858 #, no-wrap
2859 msgid "2012-04-20"
2860 msgstr ""
2861
2862 #. type: Plain text
2863 #: build/C/man3/raise.3:32
2864 msgid "raise - send a signal to the caller"
2865 msgstr ""
2866
2867 #. type: Plain text
2868 #: build/C/man3/raise.3:37
2869 #, no-wrap
2870 msgid "B<int raise(int >I<sig>B<);>\n"
2871 msgstr ""
2872
2873 #. type: Plain text
2874 #: build/C/man3/raise.3:43
2875 msgid ""
2876 "The B<raise>()  function sends a signal to the calling process or thread.  "
2877 "In a single-threaded program it is equivalent to"
2878 msgstr ""
2879
2880 #. type: Plain text
2881 #: build/C/man3/raise.3:47
2882 #, no-wrap
2883 msgid "kill(getpid(), sig);\n"
2884 msgstr ""
2885
2886 #. type: Plain text
2887 #: build/C/man3/raise.3:51
2888 msgid "In a multithreaded program it is equivalent to"
2889 msgstr ""
2890
2891 #. type: Plain text
2892 #: build/C/man3/raise.3:55
2893 #, no-wrap
2894 msgid "pthread_kill(pthread_self(), sig);\n"
2895 msgstr ""
2896
2897 #. type: Plain text
2898 #: build/C/man3/raise.3:61
2899 msgid ""
2900 "If the signal causes a handler to be called, B<raise>()  will return only "
2901 "after the signal handler has returned."
2902 msgstr ""
2903
2904 #. type: Plain text
2905 #: build/C/man3/raise.3:64
2906 msgid "B<raise>()  returns 0 on success, and nonzero for failure."
2907 msgstr ""
2908
2909 #. type: Plain text
2910 #: build/C/man3/raise.3:66 build/C/man2/signal.2:112
2911 msgid "C89, C99, POSIX.1-2001."
2912 msgstr ""
2913
2914 #.  2.3.2 used the obsolete tkill(), if available.
2915 #. type: Plain text
2916 #: build/C/man3/raise.3:77
2917 msgid ""
2918 "Since version 2.3.3, glibc implements B<raise>()  by calling B<tgkill>(2), "
2919 "if the kernel supports that system call.  Older glibc versions implemented "
2920 "B<raise>()  using B<kill>(2)."
2921 msgstr ""
2922
2923 #. type: Plain text
2924 #: build/C/man3/raise.3:84
2925 msgid ""
2926 "B<getpid>(2), B<kill>(2), B<sigaction>(2), B<signal>(2), B<pthread_kill>(3), "
2927 "B<signal>(7)"
2928 msgstr ""
2929
2930 #. type: TH
2931 #: build/C/man2/restart_syscall.2:33
2932 #, no-wrap
2933 msgid "RESTART_SYSCALL"
2934 msgstr ""
2935
2936 #. type: TH
2937 #: build/C/man2/restart_syscall.2:33 build/C/man2/sigaction.2:47 build/C/man7/signal.7:46 build/C/man2/sigreturn.2:29
2938 #, no-wrap
2939 msgid "2013-07-30"
2940 msgstr ""
2941
2942 #. type: Plain text
2943 #: build/C/man2/restart_syscall.2:36
2944 msgid "restart_syscall - restart a system call after interruption by a stop signal"
2945 msgstr ""
2946
2947 #. type: Plain text
2948 #: build/C/man2/restart_syscall.2:38
2949 msgid "B<int restart_syscall(void);>"
2950 msgstr ""
2951
2952 #. type: Plain text
2953 #: build/C/man2/restart_syscall.2:41
2954 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
2955 msgstr ""
2956
2957 #. type: Plain text
2958 #: build/C/man2/restart_syscall.2:53
2959 msgid ""
2960 "The B<restart_syscall>()  system call is used to restart certain system "
2961 "calls after a process that was stopped by a signal (e.g., B<SIGSTOP> or "
2962 "B<SIGTSTP>)  is later resumed after receiving a B<SIGCONT> signal.  This "
2963 "system call is designed only for internal use by the kernel."
2964 msgstr ""
2965
2966 #.  These system calls correspond to the special internal errno value
2967 #.  ERESTART_RESTARTBLOCK. Each of the system calls has a "restart"
2968 #.  helper function that is invoked by restart_syscall().
2969 #. type: Plain text
2970 #: build/C/man2/restart_syscall.2:84
2971 msgid ""
2972 "B<restart_syscall>()  is used for restarting only those system calls that, "
2973 "when restarted, should adjust their time-related parameters\\(emnamely "
2974 "B<poll>(2)  (since Linux 2.6.24), B<nanosleep>(2)  (since Linux 2.6), "
2975 "B<clock_nanosleep>(2)  (since Linux 2.6), and B<futex>(2), when employed "
2976 "with the B<FUTEX_WAIT> (since Linux 2.6.22)  and B<FUTEX_WAIT_BITSET> (since "
2977 "Linux 2.6.31)  operations.  B<restart_syscall>()  restarts the interrupted "
2978 "system call with a time argument that is suitably adjusted to account for "
2979 "the time that has already elapsed (including the time where the process was "
2980 "stopped by a signal).  Without the B<restart_syscall>()  mechanism, "
2981 "restarting these system calls would not correctly deduce the already elapsed "
2982 "time when the process continued execution."
2983 msgstr ""
2984
2985 #. type: Plain text
2986 #: build/C/man2/restart_syscall.2:88
2987 msgid ""
2988 "The return value of B<restart_syscall>()  is the return value of whatever "
2989 "system call is being restarted."
2990 msgstr ""
2991
2992 #. type: Plain text
2993 #: build/C/man2/restart_syscall.2:92
2994 msgid ""
2995 "I<errno> is set as per the errors for whatever system call is being "
2996 "restarted by B<restart_syscall>()."
2997 msgstr ""
2998
2999 #. type: Plain text
3000 #: build/C/man2/restart_syscall.2:96
3001 msgid "The B<restart_syscall>()  system call is present since Linux 2.6."
3002 msgstr ""
3003
3004 #. type: Plain text
3005 #: build/C/man2/restart_syscall.2:98
3006 msgid "This system call is Linux specific."
3007 msgstr ""
3008
3009 #. type: Plain text
3010 #: build/C/man2/restart_syscall.2:102
3011 msgid ""
3012 "There is no glibc wrapper for this system call, because it is intended for "
3013 "use only by the kernel and should never be called by applications."
3014 msgstr ""
3015
3016 #
3017 #.  FIXME
3018 #.  There is one oddness in the implementation though, with respect to
3019 #.  nanosleep() (and probably also clock_nanosleep()). The scenario
3020 #.  is as follows:
3021 #.     1. Start a nanosleep() for (say) 30 seconds,
3022 #.     2. Stop the process with (say) SIGTSTP (^Z).
3023 #.     3. Resume the process with SIGCONT,
3024 #.     4. Upon return, the 'rem' argument of nanosleep() will contain the
3025 #.        remaining unslept time **at the time when SIGTSTP was delivered**.
3026 #.  The behavior at point 4 is odd, but doesn't violate the standards, which
3027 #.  specify the treatment of 'rem' only when the system call returns with
3028 #.  the error EINTR (i.e., the call was interrupted by a signal handler).
3029 #. type: Plain text
3030 #: build/C/man2/restart_syscall.2:123
3031 msgid ""
3032 "From user space, the operation of B<restart_syscall>(2)  is largely "
3033 "invisible: to the process that made the system call that is restarted, it "
3034 "appears as though that system call executed and returned in the usual "
3035 "fashion."
3036 msgstr ""
3037
3038 #.  FIXME select(2) should probably get the restart_syscall() treatment:
3039 #.      If a select() call is suspended by stop-sig+SIGCONT, the time
3040 #.      spent suspended is *not* deducted when the select() is restarted.
3041 #.  FIXME: check whether recvmmsg() handles stop-sig+SIGCONT properly.
3042 #. type: Plain text
3043 #: build/C/man2/restart_syscall.2:131
3044 msgid "B<sigreturn>(2), B<sigaction>(2), B<signal>(7)"
3045 msgstr ""
3046
3047 #. type: TH
3048 #: build/C/man2/rt_sigqueueinfo.2:25
3049 #, no-wrap
3050 msgid "RT_SIGQUEUEINFO"
3051 msgstr ""
3052
3053 #. type: TH
3054 #: build/C/man2/rt_sigqueueinfo.2:25 build/C/man2/sgetmask.2:26 build/C/man2/tkill.2:29
3055 #, no-wrap
3056 msgid "2012-07-13"
3057 msgstr ""
3058
3059 #. type: Plain text
3060 #: build/C/man2/rt_sigqueueinfo.2:28
3061 msgid "rt_sigqueueinfo, rt_tgsigqueueinfo - queue a signal and data"
3062 msgstr ""
3063
3064 #. type: Plain text
3065 #: build/C/man2/rt_sigqueueinfo.2:31
3066 #, no-wrap
3067 msgid ""
3068 "B<int rt_sigqueueinfo(pid_t >I<tgid>B<, int >I<sig>B<, siginfo_t "
3069 "*>I<uinfo>B<);>\n"
3070 msgstr ""
3071
3072 #. type: Plain text
3073 #: build/C/man2/rt_sigqueueinfo.2:34
3074 #, no-wrap
3075 msgid ""
3076 "B<int rt_tgsigqueueinfo(pid_t >I<tgid>B<, pid_t >I<tid>B<, int >I<sig>B<,>\n"
3077 "B<                      siginfo_t *>I<uinfo>B<);>\n"
3078 msgstr ""
3079
3080 #. type: Plain text
3081 #: build/C/man2/rt_sigqueueinfo.2:38 build/C/man2/sgetmask.2:36 build/C/man2/tkill.2:41
3082 msgid "I<Note>: There are no glibc wrappers for these system calls; see NOTES."
3083 msgstr ""
3084
3085 #. type: Plain text
3086 #: build/C/man2/rt_sigqueueinfo.2:50
3087 msgid ""
3088 "The B<rt_sigqueueinfo>()  and B<rt_tgsigqueueinfo>()  system calls are the "
3089 "low-level interfaces used to send a signal plus data to a process or "
3090 "thread.  The receiver of the signal can obtain the accompanying data by "
3091 "establishing a signal handler with the B<sigaction>(2)  B<SA_SIGINFO> flag."
3092 msgstr ""
3093
3094 #. type: Plain text
3095 #: build/C/man2/rt_sigqueueinfo.2:56
3096 msgid ""
3097 "These system calls are not intended for direct application use; they are "
3098 "provided to allow the implementation of B<sigqueue>(3)  and "
3099 "B<pthread_sigqueue>(3)."
3100 msgstr ""
3101
3102 #. type: Plain text
3103 #: build/C/man2/rt_sigqueueinfo.2:68
3104 msgid ""
3105 "The B<rt_sigqueueinfo>()  system call sends the signal I<sig> to the thread "
3106 "group with the ID I<tgid>.  (The term \"thread group\" is synonymous with "
3107 "\"process\", and I<tid> corresponds to the traditional UNIX process ID.)  "
3108 "The signal will be delivered to an arbitrary member of the thread group "
3109 "(i.e., one of the threads that is not currently blocking the signal)."
3110 msgstr ""
3111
3112 #. type: Plain text
3113 #: build/C/man2/rt_sigqueueinfo.2:79
3114 msgid ""
3115 "The I<uinfo> argument specifies the data to accompany the signal.  This "
3116 "argument is a pointer to a structure of type I<siginfo_t>, described in "
3117 "B<sigaction>(2)  (and defined by including I<E<lt>sigaction.hE<gt>>).  The "
3118 "caller should set the following fields in this structure:"
3119 msgstr ""
3120
3121 #. type: TP
3122 #: build/C/man2/rt_sigqueueinfo.2:79 build/C/man7/sigevent.7:88 build/C/man2/wait.2:314
3123 #, no-wrap
3124 msgid "I<si_code>"
3125 msgstr ""
3126
3127 #.  tkill(2) or
3128 #. type: Plain text
3129 #: build/C/man2/rt_sigqueueinfo.2:95
3130 msgid ""
3131 "This must be one of the B<SI_*> codes in the Linux kernel source file "
3132 "I<include/asm-generic/siginfo.h>, with the restriction that the code must be "
3133 "negative (i.e., cannot be B<SI_USER>, which is used by the kernel to "
3134 "indicate a signal sent by B<kill>(2))  and cannot (since Linux 2.6.39) be "
3135 "B<SI_TKILL> (which is used by the kernel to indicate a signal sent using "
3136 "B<tgkill>(2))."
3137 msgstr ""
3138
3139 #. type: TP
3140 #: build/C/man2/rt_sigqueueinfo.2:95 build/C/man2/wait.2:293
3141 #, no-wrap
3142 msgid "I<si_pid>"
3143 msgstr ""
3144
3145 #. type: Plain text
3146 #: build/C/man2/rt_sigqueueinfo.2:99
3147 msgid "This should be set to a process ID, typically the process ID of the sender."
3148 msgstr ""
3149
3150 #. type: TP
3151 #: build/C/man2/rt_sigqueueinfo.2:99 build/C/man2/wait.2:296
3152 #, no-wrap
3153 msgid "I<si_uid>"
3154 msgstr ""
3155
3156 #. type: Plain text
3157 #: build/C/man2/rt_sigqueueinfo.2:103
3158 msgid "This should be set to a user ID, typically the real user ID of the sender."
3159 msgstr ""
3160
3161 #. type: TP
3162 #: build/C/man2/rt_sigqueueinfo.2:103 build/C/man7/sigevent.7:96
3163 #, no-wrap
3164 msgid "I<si_value>"
3165 msgstr ""
3166
3167 #. type: Plain text
3168 #: build/C/man2/rt_sigqueueinfo.2:110
3169 msgid ""
3170 "This field contains the user data to accompany the signal.  For more "
3171 "information, see the description of the last (I<union sigval>)  argument of "
3172 "B<sigqueue>(3)."
3173 msgstr ""
3174
3175 #. type: Plain text
3176 #: build/C/man2/rt_sigqueueinfo.2:117
3177 msgid ""
3178 "Internally, the kernel sets the I<si_signo> field to the value specified in "
3179 "I<sig>, so that the receiver of the signal can also obtain the signal number "
3180 "via that field."
3181 msgstr ""
3182
3183 #. type: Plain text
3184 #: build/C/man2/rt_sigqueueinfo.2:129
3185 msgid ""
3186 "The B<rt_tgsigqueueinfo>()  system call is like B<rt_sigqueueinfo>(), but "
3187 "sends the signal and data to the single thread specified by the combination "
3188 "of I<tgid>, a thread group ID, and I<tid>, a thread in that thread group."
3189 msgstr ""
3190
3191 #. type: Plain text
3192 #: build/C/man2/rt_sigqueueinfo.2:134
3193 msgid ""
3194 "On success, these system calls return 0.  On error, they return -1 and "
3195 "I<errno> is set to indicate the error."
3196 msgstr ""
3197
3198 #. type: TP
3199 #: build/C/man2/rt_sigqueueinfo.2:135 build/C/man3/sigqueue.3:92 build/C/man2/sigwaitinfo.2:115 build/C/man2/timer_create.2:176
3200 #, no-wrap
3201 msgid "B<EAGAIN>"
3202 msgstr ""
3203
3204 #. type: Plain text
3205 #: build/C/man2/rt_sigqueueinfo.2:141 build/C/man3/sigqueue.3:98
3206 msgid ""
3207 "The limit of signals which may be queued has been reached.  (See "
3208 "B<signal>(7)  for further information.)"
3209 msgstr ""
3210
3211 #. type: Plain text
3212 #: build/C/man2/rt_sigqueueinfo.2:148
3213 msgid "I<sig>, I<tgid>, or I<tid> was invalid."
3214 msgstr ""
3215
3216 #. type: Plain text
3217 #: build/C/man2/rt_sigqueueinfo.2:156
3218 msgid ""
3219 "The caller does not have permission to send the signal to the target.  For "
3220 "the required permissions, see B<kill>(2).  Or: I<uinfo-E<gt>si_code> is "
3221 "invalid."
3222 msgstr ""
3223
3224 #. type: Plain text
3225 #: build/C/man2/rt_sigqueueinfo.2:162
3226 msgid "B<rt_sigqueueinfo>(): No thread group matching I<tgid> was found."
3227 msgstr ""
3228
3229 #. type: Plain text
3230 #: build/C/man2/rt_sigqueueinfo.2:169
3231 msgid "B<rt_tgsigqueinfo>(): No thread matching I<tgid> and I<tid> was found."
3232 msgstr ""
3233
3234 #. type: Plain text
3235 #: build/C/man2/rt_sigqueueinfo.2:176
3236 msgid ""
3237 "The B<rt_sigqueueinfo>()  system call was added to Linux in version 2.2.  "
3238 "The B<rt_tgsigqueueinfo>()  system call was added to Linux in version "
3239 "2.6.31."
3240 msgstr ""
3241
3242 #. type: Plain text
3243 #: build/C/man2/rt_sigqueueinfo.2:178 build/C/man2/sgetmask.2:68 build/C/man2/timerfd_create.2:373
3244 msgid "These system calls are Linux-specific."
3245 msgstr ""
3246
3247 #. type: Plain text
3248 #: build/C/man2/rt_sigqueueinfo.2:183
3249 msgid ""
3250 "Since these system calls are not intended for application use, there are no "
3251 "glibc wrapper functions; use B<syscall>(2)  in the unlikely case that you "
3252 "want to call them directly."
3253 msgstr ""
3254
3255 #. type: Plain text
3256 #: build/C/man2/rt_sigqueueinfo.2:188
3257 msgid ""
3258 "As with B<kill>(2), the null signal (0) can be used to check if the "
3259 "specified process or thread exists."
3260 msgstr ""
3261
3262 #. type: Plain text
3263 #: build/C/man2/rt_sigqueueinfo.2:196
3264 msgid ""
3265 "B<kill>(2), B<sigaction>(2), B<sigprocmask>(2), B<tgkill>(2), "
3266 "B<pthread_sigqueue>(3), B<sigqueue>(3), B<signal>(7)"
3267 msgstr ""
3268
3269 #. type: TH
3270 #: build/C/man2/s390_runtime_instr.2:25
3271 #, no-wrap
3272 msgid "S390_RUNTIME_INSTR"
3273 msgstr ""
3274
3275 #. type: TH
3276 #: build/C/man2/s390_runtime_instr.2:25
3277 #, no-wrap
3278 msgid "2012-12-17"
3279 msgstr ""
3280
3281 #. type: Plain text
3282 #: build/C/man2/s390_runtime_instr.2:28
3283 msgid "s390_runtime_instr - enable/disable s390 CPU run-time instrumentation"
3284 msgstr ""
3285
3286 #. type: Plain text
3287 #: build/C/man2/s390_runtime_instr.2:31
3288 #, no-wrap
3289 msgid "B<#include E<lt>asm/runtime_instr.hE<gt>>\n"
3290 msgstr ""
3291
3292 #. type: Plain text
3293 #: build/C/man2/s390_runtime_instr.2:33
3294 #, no-wrap
3295 msgid "B<int s390_runtime_instr(int >I<command>B<, int >I<signum>B<);>\n"
3296 msgstr ""
3297
3298 #. type: Plain text
3299 #: build/C/man2/s390_runtime_instr.2:39
3300 msgid ""
3301 "The B<s390_runtime_instr>()  system call starts or stops CPU run-time "
3302 "instrumentation for the calling thread."
3303 msgstr ""
3304
3305 #. type: Plain text
3306 #: build/C/man2/s390_runtime_instr.2:47
3307 msgid ""
3308 "The I<command> argument controls whether run-time instrumentation is started "
3309 "(B<S390_RUNTIME_INSTR_START>, 1) or stopped (B<S390_RUNTIME_INSTR_STOP>, 2) "
3310 "for the calling thread."
3311 msgstr ""
3312
3313 #. type: Plain text
3314 #: build/C/man2/s390_runtime_instr.2:54
3315 msgid ""
3316 "The I<signum> argument specifies the number of a real-time signal.  The "
3317 "real-time signal is sent to the thread if the run-time instrumentation "
3318 "buffer is full or if the run-time-instrumentation-halted interrupt occurred."
3319 msgstr ""
3320
3321 #. type: Plain text
3322 #: build/C/man2/s390_runtime_instr.2:65
3323 msgid ""
3324 "On success, B<s390_runtime_instr>()  returns 0 and enables the thread for "
3325 "run-time instrumentation by assigning the thread a default run-time "
3326 "instrumentation control block.  The caller can then read and modify the "
3327 "control block and start the run-time instrumentation.  On error, -1 is "
3328 "returned and I<errno> is set to one of the error codes listed below."
3329 msgstr ""
3330
3331 #. type: Plain text
3332 #: build/C/man2/s390_runtime_instr.2:73
3333 msgid ""
3334 "The value specified in I<command> is not a valid command or the value "
3335 "specified in I<signum> is not a real-time signal number."
3336 msgstr ""
3337
3338 #. type: Plain text
3339 #: build/C/man2/s390_runtime_instr.2:76
3340 msgid "Allocating memory for the run-time instrumentation control block failed."
3341 msgstr ""
3342
3343 #. type: TP
3344 #: build/C/man2/s390_runtime_instr.2:76
3345 #, no-wrap
3346 msgid "B<EOPNOTSUPP>"
3347 msgstr ""
3348
3349 #. type: Plain text
3350 #: build/C/man2/s390_runtime_instr.2:79
3351 msgid "The run-time instrumentation facility is not available."
3352 msgstr ""
3353
3354 #. type: Plain text
3355 #: build/C/man2/s390_runtime_instr.2:81
3356 msgid "This system call is available since Linux 3.7."
3357 msgstr ""
3358
3359 #. type: Plain text
3360 #: build/C/man2/s390_runtime_instr.2:84
3361 msgid ""
3362 "This Linux-specific system call is available only on the s390 architecture.  "
3363 "The run-time instrumentation facility is available beginning with System z "
3364 "EC12."
3365 msgstr ""
3366
3367 #. type: Plain text
3368 #: build/C/man2/s390_runtime_instr.2:88
3369 msgid ""
3370 "Glibc does not provide a wrapper for this system call, use B<syscall>(2)  to "
3371 "call it."
3372 msgstr ""
3373
3374 #. type: Plain text
3375 #: build/C/man2/s390_runtime_instr.2:91
3376 msgid "B<syscall>(2), B<signal>(7)"
3377 msgstr ""
3378
3379 #. type: TH
3380 #: build/C/man2/sgetmask.2:26
3381 #, no-wrap
3382 msgid "SGETMASK"
3383 msgstr ""
3384
3385 #. type: Plain text
3386 #: build/C/man2/sgetmask.2:29
3387 msgid "sgetmask, ssetmask - manipulation of signal mask (obsolete)"
3388 msgstr ""
3389
3390 #. type: Plain text
3391 #: build/C/man2/sgetmask.2:31
3392 msgid "B<long sgetmask(void);>"
3393 msgstr ""
3394
3395 #. type: Plain text
3396 #: build/C/man2/sgetmask.2:33
3397 msgid "B<long ssetmask(long >I<newmask>B<);>"
3398 msgstr ""
3399
3400 #. type: Plain text
3401 #: build/C/man2/sgetmask.2:42
3402 msgid ""
3403 "These system calls are obsolete.  I<Do not use them>; use B<sigprocmask>(2)  "
3404 "instead."
3405 msgstr ""
3406
3407 #. type: Plain text
3408 #: build/C/man2/sgetmask.2:45
3409 msgid "B<sgetmask>()  returns the signal mask of the calling process."
3410 msgstr ""
3411
3412 #. type: Plain text
3413 #: build/C/man2/sgetmask.2:50
3414 msgid ""
3415 "B<ssetmask>()  sets the signal mask of the calling process to the value "
3416 "given in I<newmask>.  The previous signal mask is returned."
3417 msgstr ""
3418
3419 #. type: Plain text
3420 #: build/C/man2/sgetmask.2:59
3421 msgid ""
3422 "The signal masks dealt with by these two system calls are plain bit masks "
3423 "(unlike the I<sigset_t> used by B<sigprocmask>(2)); use B<sigmask>(3)  to "
3424 "create and inspect these masks."
3425 msgstr ""
3426
3427 #. type: Plain text
3428 #: build/C/man2/sgetmask.2:64
3429 msgid ""
3430 "B<sgetmask>()  always successfully returns the signal mask.  B<ssetmask>()  "
3431 "always succeeds, and returns the previous signal mask."
3432 msgstr ""
3433
3434 #. type: Plain text
3435 #: build/C/man2/sgetmask.2:66
3436 msgid "These system calls always succeed."
3437 msgstr ""
3438
3439 #. type: Plain text
3440 #: build/C/man2/sgetmask.2:72
3441 msgid ""
3442 "Glibc does not provide wrappers for these obsolete system calls; in the "
3443 "unlikely event that you want to call them, use B<syscall>(2)."
3444 msgstr ""
3445
3446 #. type: Plain text
3447 #: build/C/man2/sgetmask.2:75
3448 msgid ""
3449 "These system calls are unaware of signal numbers greater than 31 (i.e., "
3450 "real-time signals)."
3451 msgstr ""
3452
3453 #. type: Plain text
3454 #: build/C/man2/sgetmask.2:80
3455 msgid "It is not possible to block B<SIGSTOP> or B<SIGKILL>."
3456 msgstr ""
3457
3458 #. type: Plain text
3459 #: build/C/man2/sgetmask.2:83
3460 msgid "B<sigprocmask>(2), B<signal>(7)"
3461 msgstr ""
3462
3463 #. type: TH
3464 #: build/C/man2/sigaction.2:47
3465 #, no-wrap
3466 msgid "SIGACTION"
3467 msgstr ""
3468
3469 #. type: Plain text
3470 #: build/C/man2/sigaction.2:50
3471 msgid "sigaction - examine and change a signal action"
3472 msgstr ""
3473
3474 #. type: Plain text
3475 #: build/C/man2/sigaction.2:56
3476 #, no-wrap
3477 msgid ""
3478 "B<int sigaction(int >I<signum>B<, const struct sigaction *>I<act>B<,>\n"
3479 "B<              struct sigaction *>I<oldact>B<);>\n"
3480 msgstr ""
3481
3482 #. type: Plain text
3483 #: build/C/man2/sigaction.2:66
3484 msgid ""
3485 "B<sigaction>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
3486 "_POSIX_SOURCE"
3487 msgstr ""
3488
3489 #. type: Plain text
3490 #: build/C/man2/sigaction.2:69
3491 msgid "I<siginfo_t>: _POSIX_C_SOURCE E<gt>= 199309L"
3492 msgstr ""
3493
3494 #. type: Plain text
3495 #: build/C/man2/sigaction.2:78
3496 msgid ""
3497 "The B<sigaction>()  system call is used to change the action taken by a "
3498 "process on receipt of a specific signal.  (See B<signal>(7)  for an overview "
3499 "of signals.)"
3500 msgstr ""
3501
3502 #. type: Plain text
3503 #: build/C/man2/sigaction.2:84
3504 msgid ""
3505 "I<signum> specifies the signal and can be any valid signal except B<SIGKILL> "
3506 "and B<SIGSTOP>."
3507 msgstr ""
3508
3509 #. type: Plain text
3510 #: build/C/man2/sigaction.2:95
3511 msgid ""
3512 "If I<act> is non-NULL, the new action for signal I<signum> is installed from "
3513 "I<act>.  If I<oldact> is non-NULL, the previous action is saved in "
3514 "I<oldact>."
3515 msgstr ""
3516
3517 #. type: Plain text
3518 #: build/C/man2/sigaction.2:99
3519 msgid "The I<sigaction> structure is defined as something like:"
3520 msgstr ""
3521
3522 #. type: Plain text
3523 #: build/C/man2/sigaction.2:109
3524 #, no-wrap
3525 msgid ""
3526 "struct sigaction {\n"
3527 "    void     (*sa_handler)(int);\n"
3528 "    void     (*sa_sigaction)(int, siginfo_t *, void *);\n"
3529 "    sigset_t   sa_mask;\n"
3530 "    int        sa_flags;\n"
3531 "    void     (*sa_restorer)(void);\n"
3532 "};\n"
3533 msgstr ""
3534
3535 #. type: Plain text
3536 #: build/C/man2/sigaction.2:116
3537 msgid ""
3538 "On some architectures a union is involved: do not assign to both "
3539 "I<sa_handler> and I<sa_sigaction>."
3540 msgstr ""
3541
3542 #. type: Plain text
3543 #: build/C/man2/sigaction.2:123
3544 msgid ""
3545 "The I<sa_restorer> element is obsolete and should not be used.  POSIX does "
3546 "not specify a I<sa_restorer> element."
3547 msgstr ""
3548
3549 #. type: Plain text
3550 #: build/C/man2/sigaction.2:133
3551 msgid ""
3552 "I<sa_handler> specifies the action to be associated with I<signum> and may "
3553 "be B<SIG_DFL> for the default action, B<SIG_IGN> to ignore this signal, or a "
3554 "pointer to a signal handling function.  This function receives the signal "
3555 "number as its only argument."
3556 msgstr ""
3557
3558 #. type: Plain text
3559 #: build/C/man2/sigaction.2:155
3560 msgid ""
3561 "If B<SA_SIGINFO> is specified in I<sa_flags>, then I<sa_sigaction> (instead "
3562 "of I<sa_handler>)  specifies the signal-handling function for I<signum>.  "
3563 "This function receives the signal number as its first argument, a pointer to "
3564 "a I<siginfo_t> as its second argument and a pointer to a I<ucontext_t> (cast "
3565 "to I<void\\ *>) as its third argument.  (Commonly, the handler function "
3566 "doesn't make any use of the third argument.  See B<getcontext>(3)  for "
3567 "further information about I<ucontext_t>.)"
3568 msgstr ""
3569
3570 #. type: Plain text
3571 #: build/C/man2/sigaction.2:165
3572 msgid ""
3573 "I<sa_mask> specifies a mask of signals which should be blocked (i.e., added "
3574 "to the signal mask of the thread in which the signal handler is invoked)  "
3575 "during execution of the signal handler.  In addition, the signal which "
3576 "triggered the handler will be blocked, unless the B<SA_NODEFER> flag is "
3577 "used."
3578 msgstr ""
3579
3580 #. type: Plain text
3581 #: build/C/man2/sigaction.2:169
3582 msgid ""
3583 "I<sa_flags> specifies a set of flags which modify the behavior of the "
3584 "signal.  It is formed by the bitwise OR of zero or more of the following:"
3585 msgstr ""
3586
3587 #. type: TP
3588 #: build/C/man2/sigaction.2:170
3589 #, no-wrap
3590 msgid "B<SA_NOCLDSTOP>"
3591 msgstr ""
3592
3593 #. type: Plain text
3594 #: build/C/man2/sigaction.2:187
3595 msgid ""
3596 "If I<signum> is B<SIGCHLD>, do not receive notification when child processes "
3597 "stop (i.e., when they receive one of B<SIGSTOP>, B<SIGTSTP>, B<SIGTTIN> or "
3598 "B<SIGTTOU>)  or resume (i.e., they receive B<SIGCONT>)  (see B<wait>(2)).  "
3599 "This flag is meaningful only when establishing a handler for B<SIGCHLD>."
3600 msgstr ""
3601
3602 #. type: TP
3603 #: build/C/man2/sigaction.2:187
3604 #, no-wrap
3605 msgid "B<SA_NOCLDWAIT> (since Linux 2.6)"
3606 msgstr ""
3607
3608 #.  To be precise: Linux 2.5.60 -- MTK
3609 #. type: Plain text
3610 #: build/C/man2/sigaction.2:201
3611 msgid ""
3612 "If I<signum> is B<SIGCHLD>, do not transform children into zombies when they "
3613 "terminate.  See also B<waitpid>(2).  This flag is meaningful only when "
3614 "establishing a handler for B<SIGCHLD>, or when setting that signal's "
3615 "disposition to B<SIG_DFL>."
3616 msgstr ""
3617
3618 #. type: Plain text
3619 #: build/C/man2/sigaction.2:213
3620 msgid ""
3621 "If the B<SA_NOCLDWAIT> flag is set when establishing a handler for "
3622 "B<SIGCHLD>, POSIX.1 leaves it unspecified whether a B<SIGCHLD> signal is "
3623 "generated when a child process terminates.  On Linux, a B<SIGCHLD> signal is "
3624 "generated in this case; on some other implementations, it is not."
3625 msgstr ""
3626
3627 #. type: TP
3628 #: build/C/man2/sigaction.2:213
3629 #, no-wrap
3630 msgid "B<SA_NODEFER>"
3631 msgstr ""
3632
3633 #. type: Plain text
3634 #: build/C/man2/sigaction.2:220
3635 msgid ""
3636 "Do not prevent the signal from being received from within its own signal "
3637 "handler.  This flag is meaningful only when establishing a signal handler.  "
3638 "B<SA_NOMASK> is an obsolete, nonstandard synonym for this flag."
3639 msgstr ""
3640
3641 #. type: TP
3642 #: build/C/man2/sigaction.2:220
3643 #, no-wrap
3644 msgid "B<SA_ONSTACK>"
3645 msgstr ""
3646
3647 #. type: Plain text
3648 #: build/C/man2/sigaction.2:226
3649 msgid ""
3650 "Call the signal handler on an alternate signal stack provided by "
3651 "B<sigaltstack>(2).  If an alternate stack is not available, the default "
3652 "stack will be used.  This flag is meaningful only when establishing a signal "
3653 "handler."
3654 msgstr ""
3655
3656 #. type: TP
3657 #: build/C/man2/sigaction.2:226
3658 #, no-wrap
3659 msgid "B<SA_RESETHAND>"
3660 msgstr ""
3661
3662 #. type: Plain text
3663 #: build/C/man2/sigaction.2:232
3664 msgid ""
3665 "Restore the signal action to the default upon entry to the signal handler.  "
3666 "This flag is meaningful only when establishing a signal handler.  "
3667 "B<SA_ONESHOT> is an obsolete, nonstandard synonym for this flag."
3668 msgstr ""
3669
3670 #. type: TP
3671 #: build/C/man2/sigaction.2:232
3672 #, no-wrap
3673 msgid "B<SA_RESTART>"
3674 msgstr ""
3675
3676 #. type: Plain text
3677 #: build/C/man2/sigaction.2:240
3678 msgid ""
3679 "Provide behavior compatible with BSD signal semantics by making certain "
3680 "system calls restartable across signals.  This flag is meaningful only when "
3681 "establishing a signal handler.  See B<signal>(7)  for a discussion of system "
3682 "call restarting."
3683 msgstr ""
3684
3685 #. type: TP
3686 #: build/C/man2/sigaction.2:240
3687 #, no-wrap
3688 msgid "B<SA_SIGINFO> (since Linux 2.2)"
3689 msgstr ""
3690
3691 #.  (The
3692 #.  .I sa_sigaction
3693 #.  field was added in Linux 2.1.86.)
3694 #. type: Plain text
3695 #: build/C/man2/sigaction.2:251
3696 msgid ""
3697 "The signal handler takes three arguments, not one.  In this case, "
3698 "I<sa_sigaction> should be set instead of I<sa_handler>.  This flag is "
3699 "meaningful only when establishing a signal handler."
3700 msgstr ""
3701
3702 #. type: Plain text
3703 #: build/C/man2/sigaction.2:258
3704 msgid ""
3705 "The I<siginfo_t> argument to I<sa_sigaction> is a struct with the following "
3706 "elements:"
3707 msgstr ""
3708
3709 #.  FIXME
3710 #.  si_trapno seems to be only used on SPARC and Alpha;
3711 #.  this page could use a little more detail on its purpose there.
3712 #.  In the kernel: si_tid
3713 #. type: Plain text
3714 #: build/C/man2/sigaction.2:289
3715 #, no-wrap
3716 msgid ""
3717 "siginfo_t {\n"
3718 "    int      si_signo;    /* Signal number */\n"
3719 "    int      si_errno;    /* An errno value */\n"
3720 "    int      si_code;     /* Signal code */\n"
3721 "    int      si_trapno;   /* Trap number that caused\n"
3722 "                             hardware-generated signal\n"
3723 "                             (unused on most architectures) */\n"
3724 "    pid_t    si_pid;      /* Sending process ID */\n"
3725 "    uid_t    si_uid;      /* Real user ID of sending process */\n"
3726 "    int      si_status;   /* Exit value or signal */\n"
3727 "    clock_t  si_utime;    /* User time consumed */\n"
3728 "    clock_t  si_stime;    /* System time consumed */\n"
3729 "    sigval_t si_value;    /* Signal value */\n"
3730 "    int      si_int;      /* POSIX.1b signal */\n"
3731 "    void    *si_ptr;      /* POSIX.1b signal */\n"
3732 "    int      si_overrun;  /* Timer overrun count; POSIX.1b timers */\n"
3733 "    int      si_timerid;  /* Timer ID; POSIX.1b timers */\n"
3734 "    void    *si_addr;     /* Memory location which caused fault */\n"
3735 "    long     si_band;     /* Band event (was I<int> in\n"
3736 "                             glibc 2.3.2 and earlier) */\n"
3737 "    int      si_fd;       /* File descriptor */\n"
3738 "    short    si_addr_lsb; /* Least significant bit of address\n"
3739 "                             (since Linux 2.6.32) */\n"
3740 "}\n"
3741 msgstr ""
3742
3743 #. type: Plain text
3744 #: build/C/man2/sigaction.2:298
3745 msgid ""
3746 "I<si_signo>, I<si_errno> and I<si_code> are defined for all signals.  "
3747 "(I<si_errno> is generally unused on Linux.)  The rest of the struct may be a "
3748 "union, so that one should read only the fields that are meaningful for the "
3749 "given signal:"
3750 msgstr ""
3751
3752 #. type: Plain text
3753 #: build/C/man2/sigaction.2:313
3754 msgid ""
3755 "Signals sent with B<kill>(2)  and B<sigqueue>(3)  fill in I<si_pid> and "
3756 "I<si_uid>.  In addition, signals sent with B<sigqueue>(3)  fill in I<si_int> "
3757 "and I<si_ptr> with the values specified by the sender of the signal; see "
3758 "B<sigqueue>(3)  for more details."
3759 msgstr ""
3760
3761 #. type: Plain text
3762 #: build/C/man2/sigaction.2:329
3763 msgid ""
3764 "Signals sent by POSIX.1b timers (since Linux 2.6) fill in I<si_overrun> and "
3765 "I<si_timerid>.  The I<si_timerid> field is an internal ID used by the kernel "
3766 "to identify the timer; it is not the same as the timer ID returned by "
3767 "B<timer_create>(2).  The I<si_overrun> field is the timer overrun count; "
3768 "this is the same information as is obtained by a call to "
3769 "B<timer_getoverrun>(2).  These fields are nonstandard Linux extensions."
3770 msgstr ""
3771
3772 #. type: Plain text
3773 #: build/C/man2/sigaction.2:344
3774 msgid ""
3775 "Signals sent for message queue notification (see the description of "
3776 "B<SIGEV_SIGNAL> in B<mq_notify>(3))  fill in I<si_int>/I<si_ptr>, with the "
3777 "I<sigev_value> supplied to B<mq_notify>(3); I<si_pid>, with the process ID "
3778 "of the message sender; and I<si_uid>, with the real user ID of the message "
3779 "sender."
3780 msgstr ""
3781
3782 #.  FIXME .
3783 #.  When si_utime and si_stime where originally implemented, the
3784 #.  measurement unit was HZ, which was the same as clock ticks
3785 #.  (sysconf(_SC_CLK_TCK)).  In 2.6, HZ became configurable, and
3786 #.  was *still* used as the unit to return the info these fields,
3787 #.  with the result that the field values depended on the the
3788 #.  configured HZ.  Of course, the should have been measured in
3789 #.  USER_HZ instead, so that sysconf(_SC_CLK_TCK) could be used to
3790 #.  convert to seconds.  I have a queued patch to fix this:
3791 #.  http://thread.gmane.org/gmane.linux.kernel/698061/ .
3792 #.  This patch made it into 2.6.27.
3793 #.  But note that these fields still don't return the times of
3794 #.  waited-for children (as is done by getrusage() and times()
3795 #.  and wait4()).  Solaris 8 does include child times.
3796 #. type: Plain text
3797 #: build/C/man2/sigaction.2:391
3798 msgid ""
3799 "B<SIGCHLD> fills in I<si_pid>, I<si_uid>, I<si_status>, I<si_utime> and "
3800 "I<si_stime>, providing information about the child.  The I<si_pid> field is "
3801 "the process ID of the child; I<si_uid> is the child's real user ID.  The "
3802 "I<si_status> field contains the exit status of the child (if I<si_code> is "
3803 "B<CLD_EXITED>), or the signal number that caused the process to change "
3804 "state.  The I<si_utime> and I<si_stime> contain the user and system CPU time "
3805 "used by the child process; these fields do not include the times used by "
3806 "waited-for children (unlike B<getrusage>(2)  and B<time>(2)).  In kernels up "
3807 "to 2.6, and since 2.6.27, these fields report CPU time in units of "
3808 "I<sysconf(_SC_CLK_TCK)>.  In 2.6 kernels before 2.6.27, a bug meant that "
3809 "these fields reported time in units of the (configurable) system jiffy (see "
3810 "B<time>(7))."
3811 msgstr ""
3812
3813 #.  FIXME SIGTRAP also sets the following for ptrace_notify() ?
3814 #.      info.si_code = exit_code;
3815 #.      info.si_pid = task_pid_vnr(current);
3816 #.      info.si_uid = current_uid();  /* Real UID */
3817 #. type: Plain text
3818 #: build/C/man2/sigaction.2:427
3819 msgid ""
3820 "B<SIGILL>, B<SIGFPE>, B<SIGSEGV>, B<SIGBUS>, and B<SIGTRAP> fill in "
3821 "I<si_addr> with the address of the fault.  On some architectures, these "
3822 "signals also fill in the I<si_trapno> filed.  Some suberrors of B<SIGBUS>, "
3823 "in particular B<BUS_MCEERR_AO> and B<BUS_MCEERR_AR>, also fill in "
3824 "I<si_addr_lsb>.  This field indicates the least significant bit of the "
3825 "reported address and therefore the extent of the corruption.  For example, "
3826 "if a full page was corrupted, I<si_addr_lsb> contains "
3827 "I<log2(sysconf(_SC_PAGESIZE))>.  B<BUS_MCERR_*> and I<si_addr_lsb> are "
3828 "Linux-specific extensions."
3829 msgstr ""
3830
3831 #. type: Plain text
3832 #: build/C/man2/sigaction.2:441
3833 msgid ""
3834 "B<SIGIO>/B<SIGPOLL> (the two names are synonyms on Linux)  fills in "
3835 "I<si_band> and I<si_fd>.  The I<si_band> event is a bit mask containing the "
3836 "same values as are filled in the I<revents> field by B<poll>(2).  The "
3837 "I<si_fd> field indicates the file descriptor for which the I/O event "
3838 "occurred."
3839 msgstr ""
3840
3841 #. type: Plain text
3842 #: build/C/man2/sigaction.2:448
3843 msgid ""
3844 "I<si_code> is a value (not a bit mask)  indicating why this signal was "
3845 "sent.  The following list shows the values which can be placed in I<si_code> "
3846 "for any signal, along with reason that the signal was generated."
3847 msgstr ""
3848
3849 #. type: TP
3850 #: build/C/man2/sigaction.2:449
3851 #, no-wrap
3852 msgid "B<SI_USER>"
3853 msgstr ""
3854
3855 #. type: TP
3856 #: build/C/man2/sigaction.2:452 build/C/man7/signal.7:111
3857 #, no-wrap
3858 msgid "B<kill>(2)"
3859 msgstr ""
3860
3861 #. type: TP
3862 #: build/C/man2/sigaction.2:452
3863 #, no-wrap
3864 msgid "B<SI_KERNEL>"
3865 msgstr ""
3866
3867 #. type: Plain text
3868 #: build/C/man2/sigaction.2:455
3869 msgid "Sent by the kernel."
3870 msgstr ""
3871
3872 #. type: TP
3873 #: build/C/man2/sigaction.2:455
3874 #, no-wrap
3875 msgid "B<SI_QUEUE>"
3876 msgstr ""
3877
3878 #. type: TP
3879 #: build/C/man2/sigaction.2:458 build/C/man7/signal.7:128
3880 #, no-wrap
3881 msgid "B<sigqueue>(3)"
3882 msgstr ""
3883
3884 #. type: TP
3885 #: build/C/man2/sigaction.2:458
3886 #, no-wrap
3887 msgid "B<SI_TIMER>"
3888 msgstr ""
3889
3890 #. type: Plain text
3891 #: build/C/man2/sigaction.2:461
3892 msgid "POSIX timer expired"
3893 msgstr ""
3894
3895 #. type: TP
3896 #: build/C/man2/sigaction.2:461
3897 #, no-wrap
3898 msgid "B<SI_MESGQ>"
3899 msgstr ""
3900
3901 #. type: Plain text
3902 #: build/C/man2/sigaction.2:465
3903 msgid "POSIX message queue state changed (since Linux 2.6.6); see B<mq_notify>(3)"
3904 msgstr ""
3905
3906 #. type: TP
3907 #: build/C/man2/sigaction.2:465
3908 #, no-wrap
3909 msgid "B<SI_ASYNCIO>"
3910 msgstr ""
3911
3912 #. type: Plain text
3913 #: build/C/man2/sigaction.2:468
3914 msgid "AIO completed"
3915 msgstr ""
3916
3917 #. type: TP
3918 #: build/C/man2/sigaction.2:468
3919 #, no-wrap
3920 msgid "B<SI_SIGIO>"
3921 msgstr ""
3922
3923 #. type: Plain text
3924 #: build/C/man2/sigaction.2:477
3925 msgid ""
3926 "Queued B<SIGIO> (only in kernels up to Linux 2.2; from Linux 2.4 onward "
3927 "B<SIGIO>/B<SIGPOLL> fills in I<si_code> as described below)."
3928 msgstr ""
3929
3930 #. type: TP
3931 #: build/C/man2/sigaction.2:477
3932 #, no-wrap
3933 msgid "B<SI_TKILL>"
3934 msgstr ""
3935
3936 #.  SI_DETHREAD is defined in 2.6.9 sources, but isn't implemented
3937 #.  It appears to have been an idea that was tried during 2.5.6
3938 #.  through to 2.5.24 and then was backed out.
3939 #. type: Plain text
3940 #: build/C/man2/sigaction.2:486
3941 msgid "B<tkill>(2)  or B<tgkill>(2)  (since Linux 2.4.19)"
3942 msgstr ""
3943
3944 #. type: Plain text
3945 #: build/C/man2/sigaction.2:493
3946 msgid "The following values can be placed in I<si_code> for a B<SIGILL> signal:"
3947 msgstr ""
3948
3949 #. type: TP
3950 #: build/C/man2/sigaction.2:494
3951 #, no-wrap
3952 msgid "B<ILL_ILLOPC>"
3953 msgstr ""
3954
3955 #. type: Plain text
3956 #: build/C/man2/sigaction.2:497
3957 msgid "illegal opcode"
3958 msgstr ""
3959
3960 #. type: TP
3961 #: build/C/man2/sigaction.2:497
3962 #, no-wrap
3963 msgid "B<ILL_ILLOPN>"
3964 msgstr ""
3965
3966 #. type: Plain text
3967 #: build/C/man2/sigaction.2:500
3968 msgid "illegal operand"
3969 msgstr ""
3970
3971 #. type: TP
3972 #: build/C/man2/sigaction.2:500
3973 #, no-wrap
3974 msgid "B<ILL_ILLADR>"
3975 msgstr ""
3976
3977 #. type: Plain text
3978 #: build/C/man2/sigaction.2:503
3979 msgid "illegal addressing mode"
3980 msgstr ""
3981
3982 #. type: TP
3983 #: build/C/man2/sigaction.2:503
3984 #, no-wrap
3985 msgid "B<ILL_ILLTRP>"
3986 msgstr ""
3987
3988 #. type: Plain text
3989 #: build/C/man2/sigaction.2:506
3990 msgid "illegal trap"
3991 msgstr ""
3992
3993 #. type: TP
3994 #: build/C/man2/sigaction.2:506
3995 #, no-wrap
3996 msgid "B<ILL_PRVOPC>"
3997 msgstr ""
3998
3999 #. type: Plain text
4000 #: build/C/man2/sigaction.2:509
4001 msgid "privileged opcode"
4002 msgstr ""
4003
4004 #. type: TP
4005 #: build/C/man2/sigaction.2:509
4006 #, no-wrap
4007 msgid "B<ILL_PRVREG>"
4008 msgstr ""
4009
4010 #. type: Plain text
4011 #: build/C/man2/sigaction.2:512
4012 msgid "privileged register"
4013 msgstr ""
4014
4015 #. type: TP
4016 #: build/C/man2/sigaction.2:512
4017 #, no-wrap
4018 msgid "B<ILL_COPROC>"
4019 msgstr ""
4020
4021 #. type: Plain text
4022 #: build/C/man2/sigaction.2:515
4023 msgid "coprocessor error"
4024 msgstr ""
4025
4026 #. type: TP
4027 #: build/C/man2/sigaction.2:515
4028 #, no-wrap
4029 msgid "B<ILL_BADSTK>"
4030 msgstr ""
4031
4032 #. type: Plain text
4033 #: build/C/man2/sigaction.2:518
4034 msgid "internal stack error"
4035 msgstr ""
4036
4037 #. type: Plain text
4038 #: build/C/man2/sigaction.2:525
4039 msgid "The following values can be placed in I<si_code> for a B<SIGFPE> signal:"
4040 msgstr ""
4041
4042 #. type: TP
4043 #: build/C/man2/sigaction.2:526
4044 #, no-wrap
4045 msgid "B<FPE_INTDIV>"
4046 msgstr ""
4047
4048 #. type: Plain text
4049 #: build/C/man2/sigaction.2:529
4050 msgid "integer divide by zero"
4051 msgstr ""
4052
4053 #. type: TP
4054 #: build/C/man2/sigaction.2:529
4055 #, no-wrap
4056 msgid "B<FPE_INTOVF>"
4057 msgstr ""
4058
4059 #. type: Plain text
4060 #: build/C/man2/sigaction.2:532
4061 msgid "integer overflow"
4062 msgstr ""
4063
4064 #. type: TP
4065 #: build/C/man2/sigaction.2:532
4066 #, no-wrap
4067 msgid "B<FPE_FLTDIV>"
4068 msgstr ""
4069
4070 #. type: Plain text
4071 #: build/C/man2/sigaction.2:535
4072 msgid "floating-point divide by zero"
4073 msgstr ""
4074
4075 #. type: TP
4076 #: build/C/man2/sigaction.2:535
4077 #, no-wrap
4078 msgid "B<FPE_FLTOVF>"
4079 msgstr ""
4080
4081 #. type: Plain text
4082 #: build/C/man2/sigaction.2:538
4083 msgid "floating-point overflow"
4084 msgstr ""
4085
4086 #. type: TP
4087 #: build/C/man2/sigaction.2:538
4088 #, no-wrap
4089 msgid "B<FPE_FLTUND>"
4090 msgstr ""
4091
4092 #. type: Plain text
4093 #: build/C/man2/sigaction.2:541
4094 msgid "floating-point underflow"
4095 msgstr ""
4096
4097 #. type: TP
4098 #: build/C/man2/sigaction.2:541
4099 #, no-wrap
4100 msgid "B<FPE_FLTRES>"
4101 msgstr ""
4102
4103 #. type: Plain text
4104 #: build/C/man2/sigaction.2:544
4105 msgid "floating-point inexact result"
4106 msgstr ""
4107
4108 #. type: TP
4109 #: build/C/man2/sigaction.2:544
4110 #, no-wrap
4111 msgid "B<FPE_FLTINV>"
4112 msgstr ""
4113
4114 #. type: Plain text
4115 #: build/C/man2/sigaction.2:547
4116 msgid "floating-point invalid operation"
4117 msgstr ""
4118
4119 #. type: TP
4120 #: build/C/man2/sigaction.2:547
4121 #, no-wrap
4122 msgid "B<FPE_FLTSUB>"
4123 msgstr ""
4124
4125 #. type: Plain text
4126 #: build/C/man2/sigaction.2:550
4127 msgid "subscript out of range"
4128 msgstr ""
4129
4130 #. type: Plain text
4131 #: build/C/man2/sigaction.2:557
4132 msgid "The following values can be placed in I<si_code> for a B<SIGSEGV> signal:"
4133 msgstr ""
4134
4135 #. type: TP
4136 #: build/C/man2/sigaction.2:558
4137 #, no-wrap
4138 msgid "B<SEGV_MAPERR>"
4139 msgstr ""
4140
4141 #. type: Plain text
4142 #: build/C/man2/sigaction.2:561
4143 msgid "address not mapped to object"
4144 msgstr ""
4145
4146 #. type: TP
4147 #: build/C/man2/sigaction.2:561
4148 #, no-wrap
4149 msgid "B<SEGV_ACCERR>"
4150 msgstr ""
4151
4152 #. type: Plain text
4153 #: build/C/man2/sigaction.2:564
4154 msgid "invalid permissions for mapped object"
4155 msgstr ""
4156
4157 #. type: Plain text
4158 #: build/C/man2/sigaction.2:571
4159 msgid "The following values can be placed in I<si_code> for a B<SIGBUS> signal:"
4160 msgstr ""
4161
4162 #. type: TP
4163 #: build/C/man2/sigaction.2:572
4164 #, no-wrap
4165 msgid "B<BUS_ADRALN>"
4166 msgstr ""
4167
4168 #. type: Plain text
4169 #: build/C/man2/sigaction.2:575
4170 msgid "invalid address alignment"
4171 msgstr ""
4172
4173 #. type: TP
4174 #: build/C/man2/sigaction.2:575
4175 #, no-wrap
4176 msgid "B<BUS_ADRERR>"
4177 msgstr ""
4178
4179 #. type: Plain text
4180 #: build/C/man2/sigaction.2:578
4181 msgid "nonexistent physical address"
4182 msgstr ""
4183
4184 #. type: TP
4185 #: build/C/man2/sigaction.2:578
4186 #, no-wrap
4187 msgid "B<BUS_OBJERR>"
4188 msgstr ""
4189
4190 #. type: Plain text
4191 #: build/C/man2/sigaction.2:581
4192 msgid "object-specific hardware error"
4193 msgstr ""
4194
4195 #. type: TP
4196 #: build/C/man2/sigaction.2:581
4197 #, no-wrap
4198 msgid "B<BUS_MCEERR_AR> (since Linux 2.6.32)"
4199 msgstr ""
4200
4201 #. type: Plain text
4202 #: build/C/man2/sigaction.2:584
4203 msgid "Hardware memory error consumed on a machine check; action required."
4204 msgstr ""
4205
4206 #. type: TP
4207 #: build/C/man2/sigaction.2:584
4208 #, no-wrap
4209 msgid "B<BUS_MCEERR_AO> (since Linux 2.6.32)"
4210 msgstr ""
4211
4212 #. type: Plain text
4213 #: build/C/man2/sigaction.2:587
4214 msgid "Hardware memory error detected in process but not consumed; action optional."
4215 msgstr ""
4216
4217 #. type: Plain text
4218 #: build/C/man2/sigaction.2:594
4219 msgid "The following values can be placed in I<si_code> for a B<SIGTRAP> signal:"
4220 msgstr ""
4221
4222 #. type: TP
4223 #: build/C/man2/sigaction.2:595
4224 #, no-wrap
4225 msgid "B<TRAP_BRKPT>"
4226 msgstr ""
4227
4228 #. type: Plain text
4229 #: build/C/man2/sigaction.2:598
4230 msgid "process breakpoint"
4231 msgstr ""
4232
4233 #. type: TP
4234 #: build/C/man2/sigaction.2:598
4235 #, no-wrap
4236 msgid "B<TRAP_TRACE>"
4237 msgstr ""
4238
4239 #. type: Plain text
4240 #: build/C/man2/sigaction.2:601
4241 msgid "process trace trap"
4242 msgstr ""
4243
4244 #. type: TP
4245 #: build/C/man2/sigaction.2:601
4246 #, no-wrap
4247 msgid "B<TRAP_BRANCH> (since Linux 2.4)"
4248 msgstr ""
4249
4250 #. type: Plain text
4251 #: build/C/man2/sigaction.2:604
4252 msgid "process taken branch trap"
4253 msgstr ""
4254
4255 #. type: TP
4256 #: build/C/man2/sigaction.2:604
4257 #, no-wrap
4258 msgid "B<TRAP_HWBKPT> (since Linux 2.4)"
4259 msgstr ""
4260
4261 #. type: Plain text
4262 #: build/C/man2/sigaction.2:607
4263 msgid "hardware breakpoint/watchpoint"
4264 msgstr ""
4265
4266 #. type: Plain text
4267 #: build/C/man2/sigaction.2:614
4268 msgid "The following values can be placed in I<si_code> for a B<SIGCHLD> signal:"
4269 msgstr ""
4270
4271 #. type: TP
4272 #: build/C/man2/sigaction.2:615
4273 #, no-wrap
4274 msgid "B<CLD_EXITED>"
4275 msgstr ""
4276
4277 #. type: Plain text
4278 #: build/C/man2/sigaction.2:618
4279 msgid "child has exited"
4280 msgstr ""
4281
4282 #. type: TP
4283 #: build/C/man2/sigaction.2:618
4284 #, no-wrap
4285 msgid "B<CLD_KILLED>"
4286 msgstr ""
4287
4288 #. type: Plain text
4289 #: build/C/man2/sigaction.2:621
4290 msgid "child was killed"
4291 msgstr ""
4292
4293 #. type: TP
4294 #: build/C/man2/sigaction.2:621
4295 #, no-wrap
4296 msgid "B<CLD_DUMPED>"
4297 msgstr ""
4298
4299 #. type: Plain text
4300 #: build/C/man2/sigaction.2:624
4301 msgid "child terminated abnormally"
4302 msgstr ""
4303
4304 #. type: TP
4305 #: build/C/man2/sigaction.2:624
4306 #, no-wrap
4307 msgid "B<CLD_TRAPPED>"
4308 msgstr ""
4309
4310 #. type: Plain text
4311 #: build/C/man2/sigaction.2:627
4312 msgid "traced child has trapped"
4313 msgstr ""
4314
4315 #. type: TP
4316 #: build/C/man2/sigaction.2:627
4317 #, no-wrap
4318 msgid "B<CLD_STOPPED>"
4319 msgstr ""
4320
4321 #. type: Plain text
4322 #: build/C/man2/sigaction.2:630
4323 msgid "child has stopped"
4324 msgstr ""
4325
4326 #. type: TP
4327 #: build/C/man2/sigaction.2:630
4328 #, no-wrap
4329 msgid "B<CLD_CONTINUED>"
4330 msgstr ""
4331
4332 #. type: Plain text
4333 #: build/C/man2/sigaction.2:633
4334 msgid "stopped child has continued (since Linux 2.6.9)"
4335 msgstr ""
4336
4337 #. type: Plain text
4338 #: build/C/man2/sigaction.2:640
4339 msgid ""
4340 "The following values can be placed in I<si_code> for a B<SIGIO>/B<SIGPOLL> "
4341 "signal:"
4342 msgstr ""
4343
4344 #. type: TP
4345 #: build/C/man2/sigaction.2:641
4346 #, no-wrap
4347 msgid "B<POLL_IN>"
4348 msgstr ""
4349
4350 #. type: Plain text
4351 #: build/C/man2/sigaction.2:644
4352 msgid "data input available"
4353 msgstr ""
4354
4355 #. type: TP
4356 #: build/C/man2/sigaction.2:644
4357 #, no-wrap
4358 msgid "B<POLL_OUT>"
4359 msgstr ""
4360
4361 #. type: Plain text
4362 #: build/C/man2/sigaction.2:647
4363 msgid "output buffers available"
4364 msgstr ""
4365
4366 #. type: TP
4367 #: build/C/man2/sigaction.2:647
4368 #, no-wrap
4369 msgid "B<POLL_MSG>"
4370 msgstr ""
4371
4372 #. type: Plain text
4373 #: build/C/man2/sigaction.2:650
4374 msgid "input message available"
4375 msgstr ""
4376
4377 #. type: TP
4378 #: build/C/man2/sigaction.2:650
4379 #, no-wrap
4380 msgid "B<POLL_ERR>"
4381 msgstr ""
4382
4383 #. type: Plain text
4384 #: build/C/man2/sigaction.2:653
4385 msgid "I/O error"
4386 msgstr ""
4387
4388 #. type: TP
4389 #: build/C/man2/sigaction.2:653
4390 #, no-wrap
4391 msgid "B<POLL_PRI>"
4392 msgstr ""
4393
4394 #. type: Plain text
4395 #: build/C/man2/sigaction.2:656
4396 msgid "high priority input available"
4397 msgstr ""
4398
4399 #. type: TP
4400 #: build/C/man2/sigaction.2:656
4401 #, no-wrap
4402 msgid "B<POLL_HUP>"
4403 msgstr ""
4404
4405 #. type: Plain text
4406 #: build/C/man2/sigaction.2:659
4407 msgid "device disconnected"
4408 msgstr ""
4409
4410 #. type: Plain text
4411 #: build/C/man2/sigaction.2:665
4412 msgid ""
4413 "B<sigaction>()  returns 0 on success; on error, -1 is returned, and I<errno> "
4414 "is set to indicate the error."
4415 msgstr ""
4416
4417 #. type: Plain text
4418 #: build/C/man2/sigaction.2:670
4419 msgid ""
4420 "I<act> or I<oldact> points to memory which is not a valid part of the "
4421 "process address space."
4422 msgstr ""
4423
4424 #. type: Plain text
4425 #: build/C/man2/sigaction.2:677
4426 msgid ""
4427 "An invalid signal was specified.  This will also be generated if an attempt "
4428 "is made to change the action for B<SIGKILL> or B<SIGSTOP>, which cannot be "
4429 "caught or ignored."
4430 msgstr ""
4431
4432 #.  SVr4 does not document the EINTR condition.
4433 #. type: Plain text
4434 #: build/C/man2/sigaction.2:680
4435 msgid "POSIX.1-2001, SVr4."
4436 msgstr ""
4437
4438 #. type: Plain text
4439 #: build/C/man2/sigaction.2:688 build/C/man7/signal.7:105
4440 msgid ""
4441 "A child created via B<fork>(2)  inherits a copy of its parent's signal "
4442 "dispositions.  During an B<execve>(2), the dispositions of handled signals "
4443 "are reset to the default; the dispositions of ignored signals are left "
4444 "unchanged."
4445 msgstr ""
4446
4447 #. type: Plain text
4448 #: build/C/man2/sigaction.2:706 build/C/man2/signal.2:134
4449 msgid ""
4450 "According to POSIX, the behavior of a process is undefined after it ignores "
4451 "a B<SIGFPE>, B<SIGILL>, or B<SIGSEGV> signal that was not generated by "
4452 "B<kill>(2)  or B<raise>(3).  Integer division by zero has undefined result.  "
4453 "On some architectures it will generate a B<SIGFPE> signal.  (Also dividing "
4454 "the most negative integer by -1 may generate B<SIGFPE>.)  Ignoring this "
4455 "signal might lead to an endless loop."
4456 msgstr ""
4457
4458 #. type: Plain text
4459 #: build/C/man2/sigaction.2:723
4460 msgid ""
4461 "POSIX.1-1990 disallowed setting the action for B<SIGCHLD> to B<SIG_IGN>.  "
4462 "POSIX.1-2001 allows this possibility, so that ignoring B<SIGCHLD> can be "
4463 "used to prevent the creation of zombies (see B<wait>(2)).  Nevertheless, the "
4464 "historical BSD and System V behaviors for ignoring B<SIGCHLD> differ, so "
4465 "that the only completely portable method of ensuring that terminated "
4466 "children do not become zombies is to catch the B<SIGCHLD> signal and perform "
4467 "a B<wait>(2)  or similar."
4468 msgstr ""
4469
4470 #. type: Plain text
4471 #: build/C/man2/sigaction.2:736
4472 msgid ""
4473 "POSIX.1-1990 specified only B<SA_NOCLDSTOP>.  POSIX.1-2001 added "
4474 "B<SA_NOCLDWAIT>, B<SA_RESETHAND>, B<SA_NODEFER>, and B<SA_SIGINFO>.  Use of "
4475 "these latter values in I<sa_flags> may be less portable in applications "
4476 "intended for older UNIX implementations."
4477 msgstr ""
4478
4479 #. type: Plain text
4480 #: build/C/man2/sigaction.2:740
4481 msgid "The B<SA_RESETHAND> flag is compatible with the SVr4 flag of the same name."
4482 msgstr ""
4483
4484 #. type: Plain text
4485 #: build/C/man2/sigaction.2:750
4486 msgid ""
4487 "The B<SA_NODEFER> flag is compatible with the SVr4 flag of the same name "
4488 "under kernels 1.3.9 and newer.  On older kernels the Linux implementation "
4489 "allowed the receipt of any signal, not just the one we are installing "
4490 "(effectively overriding any I<sa_mask> settings)."
4491 msgstr ""
4492
4493 #. type: Plain text
4494 #: build/C/man2/sigaction.2:756
4495 msgid ""
4496 "B<sigaction>()  can be called with a NULL second argument to query the "
4497 "current signal handler.  It can also be used to check whether a given signal "
4498 "is valid for the current machine by calling it with NULL second and third "
4499 "arguments."
4500 msgstr ""
4501
4502 #. type: Plain text
4503 #: build/C/man2/sigaction.2:762
4504 msgid ""
4505 "It is not possible to block B<SIGKILL> or B<SIGSTOP> (by specifying them in "
4506 "I<sa_mask>).  Attempts to do so are silently ignored."
4507 msgstr ""
4508
4509 #. type: Plain text
4510 #: build/C/man2/sigaction.2:766 build/C/man2/sigpending.2:70 build/C/man2/sigprocmask.2:144 build/C/man2/sigsuspend.2:108
4511 msgid "See B<sigsetops>(3)  for details on manipulating signal sets."
4512 msgstr ""
4513
4514 #. type: Plain text
4515 #: build/C/man2/sigaction.2:771
4516 msgid ""
4517 "See B<signal>(7)  for a list of the async-signal-safe functions that can be "
4518 "safely called inside from inside a signal handler."
4519 msgstr ""
4520
4521 #. type: SS
4522 #: build/C/man2/sigaction.2:771
4523 #, no-wrap
4524 msgid "Undocumented"
4525 msgstr ""
4526
4527 #. type: Plain text
4528 #: build/C/man2/sigaction.2:781
4529 msgid ""
4530 "Before the introduction of B<SA_SIGINFO> it was also possible to get some "
4531 "additional information, namely by using a I<sa_handler> with second argument "
4532 "of type I<struct sigcontext>.  See the relevant Linux kernel sources for "
4533 "details.  This use is obsolete now."
4534 msgstr ""
4535
4536 #. type: Plain text
4537 #: build/C/man2/sigaction.2:790
4538 msgid ""
4539 "In kernels up to and including 2.6.13, specifying B<SA_NODEFER> in "
4540 "I<sa_flags> prevents not only the delivered signal from being masked during "
4541 "execution of the handler, but also the signals specified in I<sa_mask>.  "
4542 "This bug was fixed in kernel 2.6.14."
4543 msgstr ""
4544
4545 #. type: Plain text
4546 #: build/C/man2/sigaction.2:793
4547 msgid "See B<mprotect>(2)."
4548 msgstr ""
4549
4550 #. type: Plain text
4551 #: build/C/man2/sigaction.2:813
4552 msgid ""
4553 "B<kill>(1), B<kill>(2), B<killpg>(2), B<pause>(2), B<restart_syscall>(2), "
4554 "B<sigaltstack>(2), B<signal>(2), B<signalfd>(2), B<sigpending>(2), "
4555 "B<sigprocmask>(2), B<sigsuspend>(2), B<wait>(2), B<raise>(3), "
4556 "B<siginterrupt>(3), B<sigqueue>(3), B<sigsetops>(3), B<sigvec>(3), "
4557 "B<core>(5), B<signal>(7)"
4558 msgstr ""
4559
4560 #. type: TH
4561 #: build/C/man2/sigaltstack.2:27
4562 #, no-wrap
4563 msgid "SIGALTSTACK"
4564 msgstr ""
4565
4566 #. type: TH
4567 #: build/C/man2/sigaltstack.2:27
4568 #, no-wrap
4569 msgid "2010-09-26"
4570 msgstr ""
4571
4572 #. type: Plain text
4573 #: build/C/man2/sigaltstack.2:30
4574 msgid "sigaltstack - set and/or get signal stack context"
4575 msgstr ""
4576
4577 #. type: Plain text
4578 #: build/C/man2/sigaltstack.2:34
4579 msgid "B<int sigaltstack(const stack_t *>I<ss>B<, stack_t *>I<oss>B<);>"
4580 msgstr ""
4581
4582 #. type: Plain text
4583 #: build/C/man2/sigaltstack.2:41
4584 msgid "B<sigaltstack>():"
4585 msgstr ""
4586
4587 #. type: Plain text
4588 #: build/C/man2/sigaltstack.2:48 build/C/man3/siginterrupt.3:53 build/C/man2/wait.2:78
4589 msgid "|| /* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
4590 msgstr ""
4591
4592 #. type: Plain text
4593 #: build/C/man2/sigaltstack.2:60
4594 msgid ""
4595 "B<sigaltstack>()  allows a process to define a new alternate signal stack "
4596 "and/or retrieve the state of an existing alternate signal stack.  An "
4597 "alternate signal stack is used during the execution of a signal handler if "
4598 "the establishment of that handler (see B<sigaction>(2))  requested it."
4599 msgstr ""
4600
4601 #. type: Plain text
4602 #: build/C/man2/sigaltstack.2:63
4603 msgid ""
4604 "The normal sequence of events for using an alternate signal stack is the "
4605 "following:"
4606 msgstr ""
4607
4608 #. type: IP
4609 #: build/C/man2/sigaltstack.2:63 build/C/man7/signal.7:387
4610 #, no-wrap
4611 msgid "1."
4612 msgstr ""
4613
4614 #. type: Plain text
4615 #: build/C/man2/sigaltstack.2:67
4616 msgid "Allocate an area of memory to be used for the alternate signal stack."
4617 msgstr ""
4618
4619 #. type: IP
4620 #: build/C/man2/sigaltstack.2:67 build/C/man7/signal.7:391
4621 #, no-wrap
4622 msgid "2."
4623 msgstr ""
4624
4625 #. type: Plain text
4626 #: build/C/man2/sigaltstack.2:73
4627 msgid ""
4628 "Use B<sigaltstack>()  to inform the system of the existence and location of "
4629 "the alternate signal stack."
4630 msgstr ""
4631
4632 #. type: IP
4633 #: build/C/man2/sigaltstack.2:73 build/C/man7/signal.7:411
4634 #, no-wrap
4635 msgid "3."
4636 msgstr ""
4637
4638 #. type: Plain text
4639 #: build/C/man2/sigaltstack.2:80
4640 msgid ""
4641 "When establishing a signal handler using B<sigaction>(2), inform the system "
4642 "that the signal handler should be executed on the alternate signal stack by "
4643 "specifying the B<SA_ONSTACK> flag."
4644 msgstr ""
4645
4646 #. type: Plain text
4647 #: build/C/man2/sigaltstack.2:88
4648 msgid ""
4649 "The I<ss> argument is used to specify a new alternate signal stack, while "
4650 "the I<oss> argument is used to retrieve information about the currently "
4651 "established signal stack.  If we are interested in performing just one of "
4652 "these tasks then the other argument can be specified as NULL.  Each of these "
4653 "arguments is a structure of the following type:"
4654 msgstr ""
4655
4656 #. type: Plain text
4657 #: build/C/man2/sigaltstack.2:96
4658 #, no-wrap
4659 msgid ""
4660 "typedef struct {\n"
4661 "    void  *ss_sp;     /* Base address of stack */\n"
4662 "    int    ss_flags;  /* Flags */\n"
4663 "    size_t ss_size;   /* Number of bytes in stack */\n"
4664 "} stack_t;\n"
4665 msgstr ""
4666
4667 #. type: Plain text
4668 #: build/C/man2/sigaltstack.2:107
4669 msgid ""
4670 "To establish a new alternate signal stack, I<ss.ss_flags> is set to zero, "
4671 "and I<ss.ss_sp> and I<ss.ss_size> specify the starting address and size of "
4672 "the stack.  The constant B<SIGSTKSZ> is defined to be large enough to cover "
4673 "the usual size requirements for an alternate signal stack, and the constant "
4674 "B<MINSIGSTKSZ> defines the minimum size required to execute a signal "
4675 "handler."
4676 msgstr ""
4677
4678 #. type: Plain text
4679 #: build/C/man2/sigaltstack.2:111
4680 msgid ""
4681 "When a signal handler is invoked on the alternate stack, the kernel "
4682 "automatically aligns the address given in I<ss.ss_sp> to a suitable address "
4683 "boundary for the underlying hardware architecture."
4684 msgstr ""
4685
4686 #. type: Plain text
4687 #: build/C/man2/sigaltstack.2:116
4688 msgid ""
4689 "To disable an existing stack, specify I<ss.ss_flags> as B<SS_DISABLE>.  In "
4690 "this case, the remaining fields in I<ss> are ignored."
4691 msgstr ""
4692
4693 #. type: Plain text
4694 #: build/C/man2/sigaltstack.2:124
4695 msgid ""
4696 "If I<oss> is not NULL, then it is used to return information about the "
4697 "alternate signal stack which was in effect prior to the call to "
4698 "B<sigaltstack>().  The I<oss.ss_sp> and I<oss.ss_size> fields return the "
4699 "starting address and size of that stack.  The I<oss.ss_flags> may return "
4700 "either of the following values:"
4701 msgstr ""
4702
4703 #. type: TP
4704 #: build/C/man2/sigaltstack.2:124
4705 #, no-wrap
4706 msgid "B<SS_ONSTACK>"
4707 msgstr ""
4708
4709 #. type: Plain text
4710 #: build/C/man2/sigaltstack.2:130
4711 msgid ""
4712 "The process is currently executing on the alternate signal stack.  (Note "
4713 "that it is not possible to change the alternate signal stack if the process "
4714 "is currently executing on it.)"
4715 msgstr ""
4716
4717 #. type: TP
4718 #: build/C/man2/sigaltstack.2:130
4719 #, no-wrap
4720 msgid "B<SS_DISABLE>"
4721 msgstr ""
4722
4723 #. type: Plain text
4724 #: build/C/man2/sigaltstack.2:133
4725 msgid "The alternate signal stack is currently disabled."
4726 msgstr ""
4727
4728 #. type: Plain text
4729 #: build/C/man2/sigaltstack.2:137
4730 msgid ""
4731 "B<sigaltstack>()  returns 0 on success, or -1 on failure with I<errno> set "
4732 "to indicate the error."
4733 msgstr ""
4734
4735 #. type: Plain text
4736 #: build/C/man2/sigaltstack.2:142
4737 msgid ""
4738 "Either I<ss> or I<oss> is not NULL and points to an area outside of the "
4739 "process's address space."
4740 msgstr ""
4741
4742 #. type: Plain text
4743 #: build/C/man2/sigaltstack.2:147
4744 msgid ""
4745 "I<ss> is not NULL and the I<ss_flags> field contains a nonzero value other "
4746 "than B<SS_DISABLE>."
4747 msgstr ""
4748
4749 #. type: Plain text
4750 #: build/C/man2/sigaltstack.2:151
4751 msgid ""
4752 "The specified size of the new alternate signal stack (I<ss.ss_size>) was "
4753 "less than B<MINSTKSZ>."
4754 msgstr ""
4755
4756 #. type: Plain text
4757 #: build/C/man2/sigaltstack.2:156
4758 msgid ""
4759 "An attempt was made to change the alternate signal stack while it was active "
4760 "(i.e., the process was already executing on the current alternate signal "
4761 "stack)."
4762 msgstr ""
4763
4764 #. type: Plain text
4765 #: build/C/man2/sigaltstack.2:158
4766 msgid "SUSv2, SVr4, POSIX.1-2001."
4767 msgstr ""
4768
4769 #. type: Plain text
4770 #: build/C/man2/sigaltstack.2:166
4771 msgid ""
4772 "The most common usage of an alternate signal stack is to handle the "
4773 "B<SIGSEGV> signal that is generated if the space available for the normal "
4774 "process stack is exhausted: in this case, a signal handler for B<SIGSEGV> "
4775 "cannot be invoked on the process stack; if we wish to handle it, we must use "
4776 "an alternate signal stack."
4777 msgstr ""
4778
4779 #. type: Plain text
4780 #: build/C/man2/sigaltstack.2:176
4781 msgid ""
4782 "Establishing an alternate signal stack is useful if a process expects that "
4783 "it may exhaust its standard stack.  This may occur, for example, because the "
4784 "stack grows so large that it encounters the upwardly growing heap, or it "
4785 "reaches a limit established by a call to B<setrlimit(RLIMIT_STACK, &rlim)>.  "
4786 "If the standard stack is exhausted, the kernel sends the process a "
4787 "B<SIGSEGV> signal.  In these circumstances the only way to catch this signal "
4788 "is on an alternate signal stack."
4789 msgstr ""
4790
4791 #. type: Plain text
4792 #: build/C/man2/sigaltstack.2:182
4793 msgid ""
4794 "On most hardware architectures supported by Linux, stacks grow downward.  "
4795 "B<sigaltstack>()  automatically takes account of the direction of stack "
4796 "growth."
4797 msgstr ""
4798
4799 #. type: Plain text
4800 #: build/C/man2/sigaltstack.2:191
4801 msgid ""
4802 "Functions called from a signal handler executing on an alternate signal "
4803 "stack will also use the alternate signal stack.  (This also applies to any "
4804 "handlers invoked for other signals while the process is executing on the "
4805 "alternate signal stack.)  Unlike the standard stack, the system does not "
4806 "automatically extend the alternate signal stack.  Exceeding the allocated "
4807 "size of the alternate signal stack will lead to unpredictable results."
4808 msgstr ""
4809
4810 #. type: Plain text
4811 #: build/C/man2/sigaltstack.2:199
4812 msgid ""
4813 "A successful call to B<execve>(2)  removes any existing alternate signal "
4814 "stack.  A child process created via B<fork>(2)  inherits a copy of its "
4815 "parent's alternate signal stack settings."
4816 msgstr ""
4817
4818 #. type: Plain text
4819 #: build/C/man2/sigaltstack.2:208
4820 msgid ""
4821 "B<sigaltstack>()  supersedes the older B<sigstack>()  call.  For backward "
4822 "compatibility, glibc also provides B<sigstack>().  All new applications "
4823 "should be written using B<sigaltstack>()."
4824 msgstr ""
4825
4826 #. type: SS
4827 #: build/C/man2/sigaltstack.2:208 build/C/man3/sigpause.3:61
4828 #, no-wrap
4829 msgid "History"
4830 msgstr ""
4831
4832 #. type: Plain text
4833 #: build/C/man2/sigaltstack.2:215
4834 msgid ""
4835 "4.2BSD had a B<sigstack>()  system call.  It used a slightly different "
4836 "struct, and had the major disadvantage that the caller had to know the "
4837 "direction of stack growth."
4838 msgstr ""
4839
4840 #. type: Plain text
4841 #: build/C/man2/sigaltstack.2:218
4842 msgid "The following code segment demonstrates the use of B<sigaltstack>():"
4843 msgstr ""
4844
4845 #. type: Plain text
4846 #: build/C/man2/sigaltstack.2:222
4847 #, no-wrap
4848 msgid "stack_t ss;\n"
4849 msgstr ""
4850
4851 #. type: Plain text
4852 #: build/C/man2/sigaltstack.2:230
4853 #, no-wrap
4854 msgid ""
4855 "ss.ss_sp = malloc(SIGSTKSZ);\n"
4856 "if (ss.ss_sp == NULL)\n"
4857 "    /* Handle error */;\n"
4858 "ss.ss_size = SIGSTKSZ;\n"
4859 "ss.ss_flags = 0;\n"
4860 "if (sigaltstack(&ss, NULL) == -1)\n"
4861 "    /* Handle error */;\n"
4862 msgstr ""
4863
4864 #. type: Plain text
4865 #: build/C/man2/sigaltstack.2:239
4866 msgid ""
4867 "B<execve>(2), B<setrlimit>(2), B<sigaction>(2), B<siglongjmp>(3), "
4868 "B<sigsetjmp>(3), B<signal>(7)"
4869 msgstr ""
4870
4871 #. type: TH
4872 #: build/C/man7/sigevent.7:26
4873 #, no-wrap
4874 msgid "SIGEVENT"
4875 msgstr ""
4876
4877 #. type: TH
4878 #: build/C/man7/sigevent.7:26
4879 #, no-wrap
4880 msgid "2011-09-09"
4881 msgstr ""
4882
4883 #. type: Plain text
4884 #: build/C/man7/sigevent.7:29
4885 msgid "sigevent - structure for notification from asynchronous routines"
4886 msgstr ""
4887
4888 #. type: Plain text
4889 #: build/C/man7/sigevent.7:36
4890 #, no-wrap
4891 msgid ""
4892 "union sigval {          /* Data passed with notification */\n"
4893 "    int     sival_int;         /* Integer value */\n"
4894 "    void   *sival_ptr;         /* Pointer value */\n"
4895 "};\n"
4896 msgstr ""
4897
4898 #. type: Plain text
4899 #: build/C/man7/sigevent.7:51
4900 #, no-wrap
4901 msgid ""
4902 "struct sigevent {\n"
4903 "    int          sigev_notify; /* Notification method */\n"
4904 "    int          sigev_signo;  /* Notification signal */\n"
4905 "    union sigval sigev_value;  /* Data passed with\n"
4906 "                                  notification */\n"
4907 "    void       (*sigev_notify_function) (union sigval);\n"
4908 "                     /* Function used for thread\n"
4909 "                        notification (SIGEV_THREAD) */\n"
4910 "    void        *sigev_notify_attributes;\n"
4911 "                     /* Attributes for notification thread\n"
4912 "                        (SIGEV_THREAD) */\n"
4913 "    pid_t        sigev_notify_thread_id;\n"
4914 "                     /* ID of thread to signal (SIGEV_THREAD_ID) */\n"
4915 "};\n"
4916 msgstr ""
4917
4918 #. type: Plain text
4919 #: build/C/man7/sigevent.7:60
4920 msgid ""
4921 "The I<sigevent> structure is used by various APIs to describe the way a "
4922 "process is to be notified about an event (e.g., completion of an "
4923 "asynchronous request, expiration of a timer, or the arrival of a message)."
4924 msgstr ""
4925
4926 #. type: Plain text
4927 #: build/C/man7/sigevent.7:68
4928 msgid ""
4929 "The definition shown in the SYNOPSIS is approximate: some of the fields in "
4930 "the I<sigevent> structure may be defined as part of a union.  Programs "
4931 "should employ only those fields relevant to the value specified in "
4932 "I<sigev_notify>."
4933 msgstr ""
4934
4935 #. type: Plain text
4936 #: build/C/man7/sigevent.7:73
4937 msgid ""
4938 "The I<sigev_notify> field specifies how notification is to be performed.  "
4939 "This field can have one of the following values:"
4940 msgstr ""
4941
4942 #. type: TP
4943 #: build/C/man7/sigevent.7:73 build/C/man2/timer_create.2:107
4944 #, no-wrap
4945 msgid "B<SIGEV_NONE>"
4946 msgstr ""
4947
4948 #. type: Plain text
4949 #: build/C/man7/sigevent.7:76
4950 msgid "A \"null\" notification: don't do anything when the event occurs."
4951 msgstr ""
4952
4953 #. type: TP
4954 #: build/C/man7/sigevent.7:76 build/C/man2/timer_create.2:112
4955 #, no-wrap
4956 msgid "B<SIGEV_SIGNAL>"
4957 msgstr ""
4958
4959 #. type: Plain text
4960 #: build/C/man7/sigevent.7:80
4961 msgid "Notify the process by sending the signal specified in I<sigev_signo>."
4962 msgstr ""
4963
4964 #. type: Plain text
4965 #: build/C/man7/sigevent.7:87
4966 msgid ""
4967 "If the signal is caught with a signal handler that was registered using the "
4968 "B<sigaction>(2)  B<SA_SIGINFO> flag, then the following fields are set in "
4969 "the I<siginfo_t> structure that is passed as the second argument of the "
4970 "handler:"
4971 msgstr ""
4972
4973 #. type: Plain text
4974 #: build/C/man7/sigevent.7:92
4975 msgid ""
4976 "This field is set to a value that depends on the API delivering the "
4977 "notification."
4978 msgstr ""
4979
4980 #. type: TP
4981 #: build/C/man7/sigevent.7:92 build/C/man2/wait.2:300
4982 #, no-wrap
4983 msgid "I<si_signo>"
4984 msgstr ""
4985
4986 #. type: Plain text
4987 #: build/C/man7/sigevent.7:96
4988 msgid ""
4989 "This field is set to the signal number (i.e., the same value as in "
4990 "I<sigev_signo>)."
4991 msgstr ""
4992
4993 #. type: Plain text
4994 #: build/C/man7/sigevent.7:100
4995 msgid "This field is set to the value specified in I<sigev_value>."
4996 msgstr ""
4997
4998 #. type: Plain text
4999 #: build/C/man7/sigevent.7:105
5000 msgid ""
5001 "Depending on the API, other fields may also be set in the I<siginfo_t> "
5002 "structure."
5003 msgstr ""
5004
5005 #. type: Plain text
5006 #: build/C/man7/sigevent.7:108
5007 msgid ""
5008 "The same information is also available if the signal is accepted using "
5009 "B<sigwaitinfo>(2)."
5010 msgstr ""
5011
5012 #. type: TP
5013 #: build/C/man7/sigevent.7:108 build/C/man2/timer_create.2:130
5014 #, no-wrap
5015 msgid "B<SIGEV_THREAD>"
5016 msgstr ""
5017
5018 #. type: Plain text
5019 #: build/C/man7/sigevent.7:125
5020 msgid ""
5021 "Notify the process by invoking I<sigev_notify_function> \"as if\" it were "
5022 "the start function of a new thread.  (Among the implementation possibilities "
5023 "here are that each timer notification could result in the creation of a new "
5024 "thread, or that a single thread is created to receive all notifications.)  "
5025 "The function is invoked with I<sigev_value> as its sole argument.  If "
5026 "I<sigev_notify_attributes> is not NULL, it should point to a "
5027 "I<pthread_attr_t> structure that defines attributes for the new thread (see "
5028 "B<pthread_attr_init>(3))."
5029 msgstr ""
5030
5031 #. type: TP
5032 #: build/C/man7/sigevent.7:125 build/C/man2/timer_create.2:138
5033 #, no-wrap
5034 msgid "B<SIGEV_THREAD_ID> (Linux-specific)"
5035 msgstr ""
5036
5037 #.  | SIGEV_SIGNAL vs not?
5038 #. type: Plain text
5039 #: build/C/man7/sigevent.7:130
5040 msgid "Currently used only by POSIX timers; see B<timer_create>(2)."
5041 msgstr ""
5042
5043 #. type: Plain text
5044 #: build/C/man7/sigevent.7:132 build/C/man2/sigpending.2:66 build/C/man2/sigprocmask.2:114 build/C/man3/sigqueue.3:116 build/C/man3/sigsetops.3:133 build/C/man2/sigsuspend.2:86 build/C/man3/sigwait.3:82 build/C/man2/sigwaitinfo.2:135 build/C/man2/timer_create.2:195 build/C/man2/timer_delete.2:69 build/C/man2/timer_getoverrun.2:99 build/C/man2/timer_settime.2:209
5045 msgid "POSIX.1-2001."
5046 msgstr ""
5047
5048 #. type: Plain text
5049 #: build/C/man7/sigevent.7:142
5050 msgid ""
5051 "B<timer_create>(2), B<aio_fsync>(3), B<aio_read>(3), B<aio_write>(3), "
5052 "B<getaddrinfo_a>(3), B<lio_listio>(3), B<mq_notify>(3), B<aio>(7), "
5053 "B<pthreads>(7)"
5054 msgstr ""
5055
5056 #. type: TH
5057 #: build/C/man3/siginterrupt.3:31
5058 #, no-wrap
5059 msgid "SIGINTERRUPT"
5060 msgstr ""
5061
5062 #. type: TH
5063 #: build/C/man3/siginterrupt.3:31 build/C/man2/signal.2:36 build/C/man2/sigpending.2:29 build/C/man2/sigprocmask.2:29 build/C/man3/sigsetops.3:31 build/C/man2/sigsuspend.2:29
5064 #, no-wrap
5065 msgid "2013-04-19"
5066 msgstr ""
5067
5068 #. type: Plain text
5069 #: build/C/man3/siginterrupt.3:34
5070 msgid "siginterrupt - allow signals to interrupt system calls"
5071 msgstr ""
5072
5073 #. type: Plain text
5074 #: build/C/man3/siginterrupt.3:39
5075 #, no-wrap
5076 msgid "B<int siginterrupt(int >I<sig>B<, int >I<flag>B<);>\n"
5077 msgstr ""
5078
5079 #. type: Plain text
5080 #: build/C/man3/siginterrupt.3:47
5081 msgid "B<siginterrupt>():"
5082 msgstr ""
5083
5084 #. type: Plain text
5085 #: build/C/man3/siginterrupt.3:64
5086 msgid ""
5087 "The B<siginterrupt>()  function changes the restart behavior when a system "
5088 "call is interrupted by the signal I<sig>.  If the I<flag> argument is false "
5089 "(0), then system calls will be restarted if interrupted by the specified "
5090 "signal I<sig>.  This is the default behavior in Linux."
5091 msgstr ""
5092
5093 #. type: Plain text
5094 #: build/C/man3/siginterrupt.3:69
5095 msgid ""
5096 "If the I<flag> argument is true (1) and no data has been transferred, then a "
5097 "system call interrupted by the signal I<sig> will return -1 and I<errno> "
5098 "will be set to B<EINTR>."
5099 msgstr ""
5100
5101 #. type: Plain text
5102 #: build/C/man3/siginterrupt.3:73
5103 msgid ""
5104 "If the I<flag> argument is true (1) and data transfer has started, then the "
5105 "system call will be interrupted and will return the actual amount of data "
5106 "transferred."
5107 msgstr ""
5108
5109 #. type: Plain text
5110 #: build/C/man3/siginterrupt.3:83
5111 msgid ""
5112 "The B<siginterrupt>()  function returns 0 on success.  It returns -1 if the "
5113 "signal number I<sig> is invalid, with I<errno> set to indicate the cause of "
5114 "the error."
5115 msgstr ""
5116
5117 #. type: Plain text
5118 #: build/C/man3/siginterrupt.3:87
5119 msgid "The specified signal number is invalid."
5120 msgstr ""
5121
5122 #. type: Plain text
5123 #: build/C/man3/siginterrupt.3:96
5124 msgid ""
5125 "4.3BSD, POSIX.1-2001.  POSIX.1-2008 marks B<siginterrupt>()  as obsolete, "
5126 "recommending the use of B<sigaction>(2)  with the B<SA_RESTART> flag "
5127 "instead."
5128 msgstr ""
5129
5130 #. type: Plain text
5131 #: build/C/man3/siginterrupt.3:98
5132 msgid "B<signal>(2)"
5133 msgstr ""
5134
5135 #. type: TH
5136 #: build/C/man2/signal.2:36 build/C/man7/signal.7:46
5137 #, no-wrap
5138 msgid "SIGNAL"
5139 msgstr ""
5140
5141 #. type: Plain text
5142 #: build/C/man2/signal.2:39
5143 msgid "signal - ANSI C signal handling"
5144 msgstr ""
5145
5146 #. type: Plain text
5147 #: build/C/man2/signal.2:45
5148 msgid "B<sighandler_t signal(int >I<signum>B<, sighandler_t >I<handler>B<);>"
5149 msgstr ""
5150
5151 #. type: Plain text
5152 #: build/C/man2/signal.2:54
5153 msgid ""
5154 "The behavior of B<signal>()  varies across UNIX versions, and has also "
5155 "varied historically across different versions of Linux.  B<Avoid its use>: "
5156 "use B<sigaction>(2)  instead.  See I<Portability> below."
5157 msgstr ""
5158
5159 #. type: Plain text
5160 #: build/C/man2/signal.2:64
5161 msgid ""
5162 "B<signal>()  sets the disposition of the signal I<signum> to I<handler>, "
5163 "which is either B<SIG_IGN>, B<SIG_DFL>, or the address of a "
5164 "programmer-defined function (a \"signal handler\")."
5165 msgstr ""
5166
5167 #. type: Plain text
5168 #: build/C/man2/signal.2:68
5169 msgid ""
5170 "If the signal I<signum> is delivered to the process, then one of the "
5171 "following happens:"
5172 msgstr ""
5173
5174 #. type: Plain text
5175 #: build/C/man2/signal.2:73
5176 msgid "If the disposition is set to B<SIG_IGN>, then the signal is ignored."
5177 msgstr ""
5178
5179 #. type: Plain text
5180 #: build/C/man2/signal.2:80
5181 msgid ""
5182 "If the disposition is set to B<SIG_DFL>, then the default action associated "
5183 "with the signal (see B<signal>(7))  occurs."
5184 msgstr ""
5185
5186 #. type: Plain text
5187 #: build/C/man2/signal.2:91
5188 msgid ""
5189 "If the disposition is set to a function, then first either the disposition "
5190 "is reset to B<SIG_DFL>, or the signal is blocked (see I<Portability> below), "
5191 "and then I<handler> is called with argument I<signum>.  If invocation of the "
5192 "handler caused the signal to be blocked, then the signal is unblocked upon "
5193 "return from the handler."
5194 msgstr ""
5195
5196 #. type: Plain text
5197 #: build/C/man2/signal.2:97
5198 msgid "The signals B<SIGKILL> and B<SIGSTOP> cannot be caught or ignored."
5199 msgstr ""
5200
5201 #. type: Plain text
5202 #: build/C/man2/signal.2:105
5203 msgid ""
5204 "B<signal>()  returns the previous value of the signal handler, or B<SIG_ERR> "
5205 "on error.  In the event of an error, I<errno> is set to indicate the cause."
5206 msgstr ""
5207
5208 #. type: Plain text
5209 #: build/C/man2/signal.2:110
5210 msgid "I<signum> is invalid."
5211 msgstr ""
5212
5213 #. type: Plain text
5214 #: build/C/man2/signal.2:116
5215 msgid "The effects of B<signal>()  in a multithreaded process are unspecified."
5216 msgstr ""
5217
5218 #. type: Plain text
5219 #: build/C/man2/signal.2:141
5220 msgid ""
5221 "See B<sigaction>(2)  for details on what happens when B<SIGCHLD> is set to "
5222 "B<SIG_IGN>."
5223 msgstr ""
5224
5225 #. type: Plain text
5226 #: build/C/man2/signal.2:146
5227 msgid ""
5228 "See B<signal>(7)  for a list of the async-signal-safe functions that can be "
5229 "safely called from inside a signal handler."
5230 msgstr ""
5231
5232 #.  libc4 and libc5 define
5233 #.  .IR SignalHandler ;
5234 #. type: Plain text
5235 #: build/C/man2/signal.2:162
5236 msgid ""
5237 "The use of I<sighandler_t> is a GNU extension, exposed if B<_GNU_SOURCE> is "
5238 "defined; glibc also defines (the BSD-derived)  I<sig_t> if B<_BSD_SOURCE> is "
5239 "defined.  Without use of such a type, the declaration of B<signal>()  is the "
5240 "somewhat harder to read:"
5241 msgstr ""
5242
5243 #. type: Plain text
5244 #: build/C/man2/signal.2:166
5245 #, no-wrap
5246 msgid ""
5247 "B<void ( *>I<signal>B<(int >I<signum>B<, void (*>I<handler>B<)(int)) ) "
5248 "(int);>\n"
5249 msgstr ""
5250
5251 #. type: SS
5252 #: build/C/man2/signal.2:168
5253 #, no-wrap
5254 msgid "Portability"
5255 msgstr ""
5256
5257 #. type: Plain text
5258 #: build/C/man2/signal.2:180
5259 msgid ""
5260 "The only portable use of B<signal>()  is to set a signal's disposition to "
5261 "B<SIG_DFL> or B<SIG_IGN>.  The semantics when using B<signal>()  to "
5262 "establish a signal handler vary across systems (and POSIX.1 explicitly "
5263 "permits this variation); B<do not use it for this purpose.>"
5264 msgstr ""
5265
5266 #. type: Plain text
5267 #: build/C/man2/signal.2:186
5268 msgid ""
5269 "POSIX.1 solved the portability mess by specifying B<sigaction>(2), which "
5270 "provides explicit control of the semantics when a signal handler is invoked; "
5271 "use that interface instead of B<signal>()."
5272 msgstr ""
5273
5274 #. type: Plain text
5275 #: build/C/man2/signal.2:196
5276 msgid ""
5277 "In the original UNIX systems, when a handler that was established using "
5278 "B<signal>()  was invoked by the delivery of a signal, the disposition of the "
5279 "signal would be reset to B<SIG_DFL>, and the system did not block delivery "
5280 "of further instances of the signal.  This is equivalent to calling "
5281 "B<sigaction>(2)  with the following flags:"
5282 msgstr ""
5283
5284 #. type: Plain text
5285 #: build/C/man2/signal.2:198
5286 #, no-wrap
5287 msgid "    sa.sa_flags = SA_RESETHAND | SA_NODEFER;\n"
5288 msgstr ""
5289
5290 #. type: Plain text
5291 #: build/C/man2/signal.2:205
5292 msgid ""
5293 "System V also provides these semantics for B<signal>().  This was bad "
5294 "because the signal might be delivered again before the handler had a chance "
5295 "to reestablish itself.  Furthermore, rapid deliveries of the same signal "
5296 "could result in recursive invocations of the handler."
5297 msgstr ""
5298
5299 #. type: Plain text
5300 #: build/C/man2/signal.2:220
5301 msgid ""
5302 "BSD improved on this situation, but unfortunately also changed the semantics "
5303 "of the existing B<signal>()  interface while doing so.  On BSD, when a "
5304 "signal handler is invoked, the signal disposition is not reset, and further "
5305 "instances of the signal are blocked from being delivered while the handler "
5306 "is executing.  Furthermore, certain blocking system calls are automatically "
5307 "restarted if interrupted by a signal handler (see B<signal>(7)).  The BSD "
5308 "semantics are equivalent to calling B<sigaction>(2)  with the following "
5309 "flags:"
5310 msgstr ""
5311
5312 #. type: Plain text
5313 #: build/C/man2/signal.2:222
5314 #, no-wrap
5315 msgid "    sa.sa_flags = SA_RESTART;\n"
5316 msgstr ""
5317
5318 #. type: Plain text
5319 #: build/C/man2/signal.2:224
5320 msgid "The situation on Linux is as follows:"
5321 msgstr ""
5322
5323 #. type: Plain text
5324 #: build/C/man2/signal.2:228
5325 msgid "The kernel's B<signal>()  system call provides System V semantics."
5326 msgstr ""
5327
5328 #. type: Plain text
5329 #: build/C/man2/signal.2:244
5330 msgid ""
5331 "By default, in glibc 2 and later, the B<signal>()  wrapper function does not "
5332 "invoke the kernel system call.  Instead, it calls B<sigaction>(2)  using "
5333 "flags that supply BSD semantics.  This default behavior is provided as long "
5334 "as the B<_BSD_SOURCE> feature test macro is defined.  By default, "
5335 "B<_BSD_SOURCE> is defined; it is also implicitly defined if one defines "
5336 "B<_GNU_SOURCE>, and can of course be explicitly defined."
5337 msgstr ""
5338
5339 #
5340 #.  System V semantics are also provided if one uses the separate
5341 #.  .BR sysv_signal (3)
5342 #.  function.
5343 #. type: Plain text
5344 #: build/C/man2/signal.2:267
5345 msgid ""
5346 "On glibc 2 and later, if the B<_BSD_SOURCE> feature test macro is not "
5347 "defined, then B<signal>()  provides System V semantics.  (The default "
5348 "implicit definition of B<_BSD_SOURCE> is not provided if one invokes "
5349 "B<gcc>(1)  in one of its standard modes (I<-std=xxx> or I<-ansi>)  or "
5350 "defines various other feature test macros such as B<_POSIX_SOURCE>, "
5351 "B<_XOPEN_SOURCE>, or B<_SVID_SOURCE>; see B<feature_test_macros>(7).)"
5352 msgstr ""
5353
5354 #. type: Plain text
5355 #: build/C/man2/signal.2:278
5356 msgid ""
5357 "The B<signal>()  function in Linux libc4 and libc5 provide System V "
5358 "semantics.  If one on a libc5 system includes I<E<lt>bsd/signal.hE<gt>> "
5359 "instead of I<E<lt>signal.hE<gt>>, then B<signal>()  provides BSD semantics."
5360 msgstr ""
5361
5362 #. type: Plain text
5363 #: build/C/man2/signal.2:297
5364 msgid ""
5365 "B<kill>(1), B<alarm>(2), B<kill>(2), B<killpg>(2), B<pause>(2), "
5366 "B<sigaction>(2), B<signalfd>(2), B<sigpending>(2), B<sigprocmask>(2), "
5367 "B<sigsuspend>(2), B<bsd_signal>(3), B<raise>(3), B<siginterrupt>(3), "
5368 "B<sigqueue>(3), B<sigsetops>(3), B<sigvec>(3), B<sysv_signal>(3), "
5369 "B<signal>(7)"
5370 msgstr ""
5371
5372 #. type: Plain text
5373 #: build/C/man7/signal.7:49
5374 msgid "signal - overview of signals"
5375 msgstr ""
5376
5377 #. type: Plain text
5378 #: build/C/man7/signal.7:52
5379 msgid ""
5380 "Linux supports both POSIX reliable signals (hereinafter \"standard "
5381 "signals\") and POSIX real-time signals."
5382 msgstr ""
5383
5384 #. type: SS
5385 #: build/C/man7/signal.7:52
5386 #, no-wrap
5387 msgid "Signal dispositions"
5388 msgstr ""
5389
5390 #. type: Plain text
5391 #: build/C/man7/signal.7:57
5392 msgid ""
5393 "Each signal has a current I<disposition>, which determines how the process "
5394 "behaves when it is delivered the signal."
5395 msgstr ""
5396
5397 #. type: Plain text
5398 #: build/C/man7/signal.7:60
5399 msgid ""
5400 "The entries in the \"Action\" column of the tables below specify the default "
5401 "disposition for each signal, as follows:"
5402 msgstr ""
5403
5404 #. type: IP
5405 #: build/C/man7/signal.7:60
5406 #, no-wrap
5407 msgid "Term"
5408 msgstr ""
5409
5410 #. type: Plain text
5411 #: build/C/man7/signal.7:62
5412 msgid "Default action is to terminate the process."
5413 msgstr ""
5414
5415 #. type: IP
5416 #: build/C/man7/signal.7:62
5417 #, no-wrap
5418 msgid "Ign"
5419 msgstr ""
5420
5421 #. type: Plain text
5422 #: build/C/man7/signal.7:64
5423 msgid "Default action is to ignore the signal."
5424 msgstr ""
5425
5426 #. type: IP
5427 #: build/C/man7/signal.7:64
5428 #, no-wrap
5429 msgid "Core"
5430 msgstr ""
5431
5432 #. type: Plain text
5433 #: build/C/man7/signal.7:67
5434 msgid "Default action is to terminate the process and dump core (see B<core>(5))."
5435 msgstr ""
5436
5437 #. type: IP
5438 #: build/C/man7/signal.7:67
5439 #, no-wrap
5440 msgid "Stop"
5441 msgstr ""
5442
5443 #. type: Plain text
5444 #: build/C/man7/signal.7:69
5445 msgid "Default action is to stop the process."
5446 msgstr ""
5447
5448 #. type: IP
5449 #: build/C/man7/signal.7:69
5450 #, no-wrap
5451 msgid "Cont"
5452 msgstr ""
5453
5454 #. type: Plain text
5455 #: build/C/man7/signal.7:71
5456 msgid "Default action is to continue the process if it is currently stopped."
5457 msgstr ""
5458
5459 #. type: Plain text
5460 #: build/C/man7/signal.7:93
5461 msgid ""
5462 "A process can change the disposition of a signal using B<sigaction>(2)  or "
5463 "B<signal>(2).  (The latter is less portable when establishing a signal "
5464 "handler; see B<signal>(2)  for details.)  Using these system calls, a "
5465 "process can elect one of the following behaviors to occur on delivery of the "
5466 "signal: perform the default action; ignore the signal; or catch the signal "
5467 "with a I<signal handler>, a programmer-defined function that is "
5468 "automatically invoked when the signal is delivered.  (By default, the signal "
5469 "handler is invoked on the normal process stack.  It is possible to arrange "
5470 "that the signal handler uses an alternate stack; see B<sigaltstack>(2)  for "
5471 "a discussion of how to do this and when it might be useful.)"
5472 msgstr ""
5473
5474 #. type: Plain text
5475 #: build/C/man7/signal.7:97
5476 msgid ""
5477 "The signal disposition is a per-process attribute: in a multithreaded "
5478 "application, the disposition of a particular signal is the same for all "
5479 "threads."
5480 msgstr ""
5481
5482 #. type: SS
5483 #: build/C/man7/signal.7:105
5484 #, no-wrap
5485 msgid "Sending a signal"
5486 msgstr ""
5487
5488 #. type: Plain text
5489 #: build/C/man7/signal.7:108
5490 msgid ""
5491 "The following system calls and library functions allow the caller to send a "
5492 "signal:"
5493 msgstr ""
5494
5495 #. type: TP
5496 #: build/C/man7/signal.7:108
5497 #, no-wrap
5498 msgid "B<raise>(3)"
5499 msgstr ""
5500
5501 #. type: Plain text
5502 #: build/C/man7/signal.7:111
5503 msgid "Sends a signal to the calling thread."
5504 msgstr ""
5505
5506 #. type: Plain text
5507 #: build/C/man7/signal.7:116
5508 msgid ""
5509 "Sends a signal to a specified process, to all members of a specified process "
5510 "group, or to all processes on the system."
5511 msgstr ""
5512
5513 #. type: TP
5514 #: build/C/man7/signal.7:116
5515 #, no-wrap
5516 msgid "B<killpg>(2)"
5517 msgstr ""
5518
5519 #. type: Plain text
5520 #: build/C/man7/signal.7:119
5521 msgid "Sends a signal to all of the members of a specified process group."
5522 msgstr ""
5523
5524 #. type: TP
5525 #: build/C/man7/signal.7:119
5526 #, no-wrap
5527 msgid "B<pthread_kill>(3)"
5528 msgstr ""
5529
5530 #. type: Plain text
5531 #: build/C/man7/signal.7:123
5532 msgid ""
5533 "Sends a signal to a specified POSIX thread in the same process as the "
5534 "caller."
5535 msgstr ""
5536
5537 #. type: TP
5538 #: build/C/man7/signal.7:123
5539 #, no-wrap
5540 msgid "B<tgkill>(2)"
5541 msgstr ""
5542
5543 #. type: Plain text
5544 #: build/C/man7/signal.7:128
5545 msgid ""
5546 "Sends a signal to a specified thread within a specific process.  (This is "
5547 "the system call used to implement B<pthread_kill>(3).)"
5548 msgstr ""
5549
5550 #. type: Plain text
5551 #: build/C/man7/signal.7:131
5552 msgid "Sends a real-time signal with accompanying data to a specified process."
5553 msgstr ""
5554
5555 #. type: SS
5556 #: build/C/man7/signal.7:131
5557 #, no-wrap
5558 msgid "Waiting for a signal to be caught"
5559 msgstr ""
5560
5561 #. type: Plain text
5562 #: build/C/man7/signal.7:135
5563 msgid ""
5564 "The following system calls suspend execution of the calling process or "
5565 "thread until a signal is caught (or an unhandled signal terminates the "
5566 "process):"
5567 msgstr ""
5568
5569 #. type: TP
5570 #: build/C/man7/signal.7:135
5571 #, no-wrap
5572 msgid "B<pause>(2)"
5573 msgstr ""
5574
5575 #. type: Plain text
5576 #: build/C/man7/signal.7:138
5577 msgid "Suspends execution until any signal is caught."
5578 msgstr ""
5579
5580 #. type: TP
5581 #: build/C/man7/signal.7:138
5582 #, no-wrap
5583 msgid "B<sigsuspend>(2)"
5584 msgstr ""
5585
5586 #. type: Plain text
5587 #: build/C/man7/signal.7:142
5588 msgid ""
5589 "Temporarily changes the signal mask (see below) and suspends execution until "
5590 "one of the unmasked signals is caught."
5591 msgstr ""
5592
5593 #. type: SS
5594 #: build/C/man7/signal.7:142
5595 #, no-wrap
5596 msgid "Synchronously accepting a signal"
5597 msgstr ""
5598
5599 #. type: Plain text
5600 #: build/C/man7/signal.7:149
5601 msgid ""
5602 "Rather than asynchronously catching a signal via a signal handler, it is "
5603 "possible to synchronously accept the signal, that is, to block execution "
5604 "until the signal is delivered, at which point the kernel returns information "
5605 "about the signal to the caller.  There are two general ways to do this:"
5606 msgstr ""
5607
5608 #. type: Plain text
5609 #: build/C/man7/signal.7:157
5610 msgid ""
5611 "B<sigwaitinfo>(2), B<sigtimedwait>(2), and B<sigwait>(3)  suspend execution "
5612 "until one of the signals in a specified set is delivered.  Each of these "
5613 "calls returns information about the delivered signal."
5614 msgstr ""
5615
5616 #. type: Plain text
5617 #: build/C/man7/signal.7:170
5618 msgid ""
5619 "B<signalfd>(2)  returns a file descriptor that can be used to read "
5620 "information about signals that are delivered to the caller.  Each B<read>(2)  "
5621 "from this file descriptor blocks until one of the signals in the set "
5622 "specified in the B<signalfd>(2)  call is delivered to the caller.  The "
5623 "buffer returned by B<read>(2)  contains a structure describing the signal."
5624 msgstr ""
5625
5626 #. type: SS
5627 #: build/C/man7/signal.7:170
5628 #, no-wrap
5629 msgid "Signal mask and pending signals"
5630 msgstr ""
5631
5632 #. type: Plain text
5633 #: build/C/man7/signal.7:177
5634 msgid ""
5635 "A signal may be I<blocked>, which means that it will not be delivered until "
5636 "it is later unblocked.  Between the time when it is generated and when it is "
5637 "delivered a signal is said to be I<pending>."
5638 msgstr ""
5639
5640 #. type: Plain text
5641 #: build/C/man7/signal.7:186
5642 msgid ""
5643 "Each thread in a process has an independent I<signal mask>, which indicates "
5644 "the set of signals that the thread is currently blocking.  A thread can "
5645 "manipulate its signal mask using B<pthread_sigmask>(3).  In a traditional "
5646 "single-threaded application, B<sigprocmask>(2)  can be used to manipulate "
5647 "the signal mask."
5648 msgstr ""
5649
5650 #. type: Plain text
5651 #: build/C/man7/signal.7:192 build/C/man2/sigprocmask.2:126
5652 msgid ""
5653 "A child created via B<fork>(2)  inherits a copy of its parent's signal mask; "
5654 "the signal mask is preserved across B<execve>(2)."
5655 msgstr ""
5656
5657 #. type: Plain text
5658 #: build/C/man7/signal.7:209
5659 msgid ""
5660 "A signal may be generated (and thus pending)  for a process as a whole "
5661 "(e.g., when sent using B<kill>(2))  or for a specific thread (e.g., certain "
5662 "signals, such as B<SIGSEGV> and B<SIGFPE>, generated as a consequence of "
5663 "executing a specific machine-language instruction are thread directed, as "
5664 "are signals targeted at a specific thread using B<pthread_kill>(3)).  A "
5665 "process-directed signal may be delivered to any one of the threads that does "
5666 "not currently have the signal blocked.  If more than one of the threads has "
5667 "the signal unblocked, then the kernel chooses an arbitrary thread to which "
5668 "to deliver the signal."
5669 msgstr ""
5670
5671 #. type: Plain text
5672 #: build/C/man7/signal.7:216
5673 msgid ""
5674 "A thread can obtain the set of signals that it currently has pending using "
5675 "B<sigpending>(2).  This set will consist of the union of the set of pending "
5676 "process-directed signals and the set of signals pending for the calling "
5677 "thread."
5678 msgstr ""
5679
5680 #. type: Plain text
5681 #: build/C/man7/signal.7:222 build/C/man2/sigpending.2:81
5682 msgid ""
5683 "A child created via B<fork>(2)  initially has an empty pending signal set; "
5684 "the pending signal set is preserved across an B<execve>(2)."
5685 msgstr ""
5686
5687 #. type: SS
5688 #: build/C/man7/signal.7:222
5689 #, no-wrap
5690 msgid "Standard signals"
5691 msgstr ""
5692
5693 #. type: Plain text
5694 #: build/C/man7/signal.7:234
5695 msgid ""
5696 "Linux supports the standard signals listed below.  Several signal numbers "
5697 "are architecture-dependent, as indicated in the \"Value\" column.  (Where "
5698 "three values are given, the first one is usually valid for alpha and sparc, "
5699 "the middle one for x86, arm, and most other architectures, and the last one "
5700 "for mips.  (Values for parisc are I<not> shown; see the Linux kernel source "
5701 "for signal numbering on that architecture.)  A - denotes that a signal is "
5702 "absent on the corresponding architecture.)"
5703 msgstr ""
5704
5705 #. type: Plain text
5706 #: build/C/man7/signal.7:236
5707 msgid "First the signals described in the original POSIX.1-1990 standard."
5708 msgstr ""
5709
5710 #. type: tbl table
5711 #: build/C/man7/signal.7:240 build/C/man7/signal.7:276 build/C/man7/signal.7:305
5712 #, no-wrap
5713 msgid "Signal\tValue\tAction\tComment\n"
5714 msgstr ""
5715
5716 #. type: tbl table
5717 #: build/C/man7/signal.7:241
5718 #, no-wrap
5719 msgid "SIGHUP\t\\01\tTerm\tHangup detected on controlling terminal\n"
5720 msgstr ""
5721
5722 #. type: tbl table
5723 #: build/C/man7/signal.7:242
5724 #, no-wrap
5725 msgid "\t\t\tor death of controlling process\n"
5726 msgstr ""
5727
5728 #. type: tbl table
5729 #: build/C/man7/signal.7:243
5730 #, no-wrap
5731 msgid "SIGINT\t\\02\tTerm\tInterrupt from keyboard\n"
5732 msgstr ""
5733
5734 #. type: tbl table
5735 #: build/C/man7/signal.7:244
5736 #, no-wrap
5737 msgid "SIGQUIT\t\\03\tCore\tQuit from keyboard\n"
5738 msgstr ""
5739
5740 #. type: tbl table
5741 #: build/C/man7/signal.7:245
5742 #, no-wrap
5743 msgid "SIGILL\t\\04\tCore\tIllegal Instruction\n"
5744 msgstr ""
5745
5746 #. type: tbl table
5747 #: build/C/man7/signal.7:246
5748 #, no-wrap
5749 msgid "SIGABRT\t\\06\tCore\tAbort signal from B<abort>(3)\n"
5750 msgstr ""
5751
5752 #. type: tbl table
5753 #: build/C/man7/signal.7:247
5754 #, no-wrap
5755 msgid "SIGFPE\t\\08\tCore\tFloating point exception\n"
5756 msgstr ""
5757
5758 #. type: tbl table
5759 #: build/C/man7/signal.7:248
5760 #, no-wrap
5761 msgid "SIGKILL\t\\09\tTerm\tKill signal\n"
5762 msgstr ""
5763
5764 #. type: tbl table
5765 #: build/C/man7/signal.7:249
5766 #, no-wrap
5767 msgid "SIGSEGV\t11\tCore\tInvalid memory reference\n"
5768 msgstr ""
5769
5770 #. type: tbl table
5771 #: build/C/man7/signal.7:250
5772 #, no-wrap
5773 msgid "SIGPIPE\t13\tTerm\tBroken pipe: write to pipe with no\n"
5774 msgstr ""
5775
5776 #. type: tbl table
5777 #: build/C/man7/signal.7:251
5778 #, no-wrap
5779 msgid "\t\t\treaders\n"
5780 msgstr ""
5781
5782 #. type: tbl table
5783 #: build/C/man7/signal.7:252
5784 #, no-wrap
5785 msgid "SIGALRM\t14\tTerm\tTimer signal from B<alarm>(2)\n"
5786 msgstr ""
5787
5788 #. type: tbl table
5789 #: build/C/man7/signal.7:253
5790 #, no-wrap
5791 msgid "SIGTERM\t15\tTerm\tTermination signal\n"
5792 msgstr ""
5793
5794 #. type: tbl table
5795 #: build/C/man7/signal.7:254
5796 #, no-wrap
5797 msgid "SIGUSR1\t30,10,16\tTerm\tUser-defined signal 1\n"
5798 msgstr ""
5799
5800 #. type: tbl table
5801 #: build/C/man7/signal.7:255
5802 #, no-wrap
5803 msgid "SIGUSR2\t31,12,17\tTerm\tUser-defined signal 2\n"
5804 msgstr ""
5805
5806 #. type: tbl table
5807 #: build/C/man7/signal.7:256
5808 #, no-wrap
5809 msgid "SIGCHLD\t20,17,18\tIgn\tChild stopped or terminated\n"
5810 msgstr ""
5811
5812 #. type: tbl table
5813 #: build/C/man7/signal.7:257
5814 #, no-wrap
5815 msgid "SIGCONT\t19,18,25\tCont\tContinue if stopped\n"
5816 msgstr ""
5817
5818 #. type: tbl table
5819 #: build/C/man7/signal.7:258
5820 #, no-wrap
5821 msgid "SIGSTOP\t17,19,23\tStop\tStop process\n"
5822 msgstr ""
5823
5824 #. type: tbl table
5825 #: build/C/man7/signal.7:259
5826 #, no-wrap
5827 msgid "SIGTSTP\t18,20,24\tStop\tStop typed at terminal\n"
5828 msgstr ""
5829
5830 #. type: tbl table
5831 #: build/C/man7/signal.7:260
5832 #, no-wrap
5833 msgid "SIGTTIN\t21,21,26\tStop\tTerminal input for background process\n"
5834 msgstr ""
5835
5836 #. type: tbl table
5837 #: build/C/man7/signal.7:261
5838 #, no-wrap
5839 msgid "SIGTTOU\t22,22,27\tStop\tTerminal output for background process\n"
5840 msgstr ""
5841
5842 #. type: Plain text
5843 #: build/C/man7/signal.7:269
5844 msgid "The signals B<SIGKILL> and B<SIGSTOP> cannot be caught, blocked, or ignored."
5845 msgstr ""
5846
5847 #. type: Plain text
5848 #: build/C/man7/signal.7:272
5849 msgid ""
5850 "Next the signals not in the POSIX.1-1990 standard but described in SUSv2 and "
5851 "POSIX.1-2001."
5852 msgstr ""
5853
5854 #. type: tbl table
5855 #: build/C/man7/signal.7:277
5856 #, no-wrap
5857 msgid "SIGBUS\t10,7,10\tCore\tBus error (bad memory access)\n"
5858 msgstr ""
5859
5860 #. type: tbl table
5861 #: build/C/man7/signal.7:278
5862 #, no-wrap
5863 msgid "SIGPOLL\t\tTerm\tPollable event (Sys V).\n"
5864 msgstr ""
5865
5866 #. type: tbl table
5867 #: build/C/man7/signal.7:279
5868 #, no-wrap
5869 msgid "\t\t\tSynonym for B<SIGIO>\n"
5870 msgstr ""
5871
5872 #. type: tbl table
5873 #: build/C/man7/signal.7:280
5874 #, no-wrap
5875 msgid "SIGPROF\t27,27,29\tTerm\tProfiling timer expired\n"
5876 msgstr ""
5877
5878 #. type: tbl table
5879 #: build/C/man7/signal.7:281
5880 #, no-wrap
5881 msgid "SIGSYS\t12,31,12\tCore\tBad argument to routine (SVr4)\n"
5882 msgstr ""
5883
5884 #. type: tbl table
5885 #: build/C/man7/signal.7:282
5886 #, no-wrap
5887 msgid "SIGTRAP\t5\tCore\tTrace/breakpoint trap\n"
5888 msgstr ""
5889
5890 #. type: tbl table
5891 #: build/C/man7/signal.7:283
5892 #, no-wrap
5893 msgid "SIGURG\t16,23,21\tIgn\tUrgent condition on socket (4.2BSD)\n"
5894 msgstr ""
5895
5896 #. type: tbl table
5897 #: build/C/man7/signal.7:284
5898 #, no-wrap
5899 msgid "SIGVTALRM\t26,26,28\tTerm\tVirtual alarm clock (4.2BSD)\n"
5900 msgstr ""
5901
5902 #. type: tbl table
5903 #: build/C/man7/signal.7:285
5904 #, no-wrap
5905 msgid "SIGXCPU\t24,24,30\tCore\tCPU time limit exceeded (4.2BSD)\n"
5906 msgstr ""
5907
5908 #. type: tbl table
5909 #: build/C/man7/signal.7:286
5910 #, no-wrap
5911 msgid "SIGXFSZ\t25,25,31\tCore\tFile size limit exceeded (4.2BSD)\n"
5912 msgstr ""
5913
5914 #. type: Plain text
5915 #: build/C/man7/signal.7:299
5916 msgid ""
5917 "Up to and including Linux 2.2, the default behavior for B<SIGSYS>, "
5918 "B<SIGXCPU>, B<SIGXFSZ>, and (on architectures other than SPARC and MIPS)  "
5919 "B<SIGBUS> was to terminate the process (without a core dump).  (On some "
5920 "other UNIX systems the default action for B<SIGXCPU> and B<SIGXFSZ> is to "
5921 "terminate the process without a core dump.)  Linux 2.4 conforms to the "
5922 "POSIX.1-2001 requirements for these signals, terminating the process with a "
5923 "core dump."
5924 msgstr ""
5925
5926 #. type: Plain text
5927 #: build/C/man7/signal.7:301
5928 msgid "Next various other signals."
5929 msgstr ""
5930
5931 #. type: tbl table
5932 #: build/C/man7/signal.7:306
5933 #, no-wrap
5934 msgid "SIGIOT\t6\tCore\tIOT trap. A synonym for B<SIGABRT>\n"
5935 msgstr ""
5936
5937 #. type: tbl table
5938 #: build/C/man7/signal.7:307
5939 #, no-wrap
5940 msgid "SIGEMT\t7,-,7\tTerm\n"
5941 msgstr ""
5942
5943 #. type: tbl table
5944 #: build/C/man7/signal.7:308
5945 #, no-wrap
5946 msgid "SIGSTKFLT\t-,16,-\tTerm\tStack fault on coprocessor (unused)\n"
5947 msgstr ""
5948
5949 #. type: tbl table
5950 #: build/C/man7/signal.7:309
5951 #, no-wrap
5952 msgid "SIGIO\t23,29,22\tTerm\tI/O now possible (4.2BSD)\n"
5953 msgstr ""
5954
5955 #. type: tbl table
5956 #: build/C/man7/signal.7:310
5957 #, no-wrap
5958 msgid "SIGCLD\t-,-,18\tIgn\tA synonym for B<SIGCHLD>\n"
5959 msgstr ""
5960
5961 #. type: tbl table
5962 #: build/C/man7/signal.7:311
5963 #, no-wrap
5964 msgid "SIGPWR\t29,30,19\tTerm\tPower failure (System V)\n"
5965 msgstr ""
5966
5967 #. type: tbl table
5968 #: build/C/man7/signal.7:312
5969 #, no-wrap
5970 msgid "SIGINFO\t29,-,-\t\tA synonym for B<SIGPWR>\n"
5971 msgstr ""
5972
5973 #. type: tbl table
5974 #: build/C/man7/signal.7:313
5975 #, no-wrap
5976 msgid "SIGLOST\t-,-,-\tTerm\tFile lock lost (unused)\n"
5977 msgstr ""
5978
5979 #. type: tbl table
5980 #: build/C/man7/signal.7:314
5981 #, no-wrap
5982 msgid "SIGWINCH\t28,28,20\tIgn\tWindow resize signal (4.3BSD, Sun)\n"
5983 msgstr ""
5984
5985 #. type: tbl table
5986 #: build/C/man7/signal.7:315
5987 #, no-wrap
5988 msgid "SIGUNUSED\t-,31,-\tCore\tSynonymous with B<SIGSYS>\n"
5989 msgstr ""
5990
5991 #. type: Plain text
5992 #: build/C/man7/signal.7:325
5993 msgid "(Signal 29 is B<SIGINFO> / B<SIGPWR> on an alpha but B<SIGLOST> on a sparc.)"
5994 msgstr ""
5995
5996 #. type: Plain text
5997 #: build/C/man7/signal.7:331
5998 msgid ""
5999 "B<SIGEMT> is not specified in POSIX.1-2001, but nevertheless appears on most "
6000 "other UNIX systems, where its default action is typically to terminate the "
6001 "process with a core dump."
6002 msgstr ""
6003
6004 #. type: Plain text
6005 #: build/C/man7/signal.7:335
6006 msgid ""
6007 "B<SIGPWR> (which is not specified in POSIX.1-2001) is typically ignored by "
6008 "default on those other UNIX systems where it appears."
6009 msgstr ""
6010
6011 #. type: Plain text
6012 #: build/C/man7/signal.7:339
6013 msgid ""
6014 "B<SIGIO> (which is not specified in POSIX.1-2001) is ignored by default on "
6015 "several other UNIX systems."
6016 msgstr ""
6017
6018 #.  parisc is the only exception: SIGSYS is 12, SIGUNUSED is 31
6019 #. type: Plain text
6020 #: build/C/man7/signal.7:346
6021 msgid ""
6022 "Where defined, B<SIGUNUSED> is synonymous with B<SIGSYS> on most "
6023 "architectures."
6024 msgstr ""
6025
6026 #. type: SS
6027 #: build/C/man7/signal.7:346
6028 #, no-wrap
6029 msgid "Real-time signals"
6030 msgstr ""
6031
6032 #. type: Plain text
6033 #: build/C/man7/signal.7:356
6034 msgid ""
6035 "Linux supports real-time signals as originally defined in the POSIX.1b "
6036 "real-time extensions (and now included in POSIX.1-2001).  The range of "
6037 "supported real-time signals is defined by the macros B<SIGRTMIN> and "
6038 "B<SIGRTMAX>.  POSIX.1-2001 requires that an implementation support at least "
6039 "B<_POSIX_RTSIG_MAX> (8) real-time signals."
6040 msgstr ""
6041
6042 #. type: Plain text
6043 #: build/C/man7/signal.7:378
6044 msgid ""
6045 "The Linux kernel supports a range of 32 different real-time signals, "
6046 "numbered 33 to 64.  However, the glibc POSIX threads implementation "
6047 "internally uses two (for NPTL) or three (for LinuxThreads) real-time signals "
6048 "(see B<pthreads>(7)), and adjusts the value of B<SIGRTMIN> suitably (to 34 "
6049 "or 35).  Because the range of available real-time signals varies according "
6050 "to the glibc threading implementation (and this variation can occur at run "
6051 "time according to the available kernel and glibc), and indeed the range of "
6052 "real-time signals varies across UNIX systems, programs should I<never refer "
6053 "to real-time signals using hard-coded numbers>, but instead should always "
6054 "refer to real-time signals using the notation B<SIGRTMIN>+n, and include "
6055 "suitable (run-time) checks that B<SIGRTMIN>+n does not exceed B<SIGRTMAX>."
6056 msgstr ""
6057
6058 #. type: Plain text
6059 #: build/C/man7/signal.7:382
6060 msgid ""
6061 "Unlike standard signals, real-time signals have no predefined meanings: the "
6062 "entire set of real-time signals can be used for application-defined "
6063 "purposes."
6064 msgstr ""
6065
6066 #. type: Plain text
6067 #: build/C/man7/signal.7:385
6068 msgid ""
6069 "The default action for an unhandled real-time signal is to terminate the "
6070 "receiving process."
6071 msgstr ""
6072
6073 #. type: Plain text
6074 #: build/C/man7/signal.7:387
6075 msgid "Real-time signals are distinguished by the following:"
6076 msgstr ""
6077
6078 #. type: Plain text
6079 #: build/C/man7/signal.7:391
6080 msgid ""
6081 "Multiple instances of real-time signals can be queued.  By contrast, if "
6082 "multiple instances of a standard signal are delivered while that signal is "
6083 "currently blocked, then only one instance is queued."
6084 msgstr ""
6085
6086 #. type: Plain text
6087 #: build/C/man7/signal.7:411
6088 msgid ""
6089 "If the signal is sent using B<sigqueue>(3), an accompanying value (either an "
6090 "integer or a pointer) can be sent with the signal.  If the receiving process "
6091 "establishes a handler for this signal using the B<SA_SIGINFO> flag to "
6092 "B<sigaction>(2)  then it can obtain this data via the I<si_value> field of "
6093 "the I<siginfo_t> structure passed as the second argument to the handler.  "
6094 "Furthermore, the I<si_pid> and I<si_uid> fields of this structure can be "
6095 "used to obtain the PID and real user ID of the process sending the signal."
6096 msgstr ""
6097
6098 #. type: Plain text
6099 #: build/C/man7/signal.7:420
6100 msgid ""
6101 "Real-time signals are delivered in a guaranteed order.  Multiple real-time "
6102 "signals of the same type are delivered in the order they were sent.  If "
6103 "different real-time signals are sent to a process, they are delivered "
6104 "starting with the lowest-numbered signal.  (I.e., low-numbered signals have "
6105 "highest priority.)  By contrast, if multiple standard signals are pending "
6106 "for a process, the order in which they are delivered is unspecified."
6107 msgstr ""
6108
6109 #. type: Plain text
6110 #: build/C/man7/signal.7:425
6111 msgid ""
6112 "If both standard and real-time signals are pending for a process, POSIX "
6113 "leaves it unspecified which is delivered first.  Linux, like many other "
6114 "implementations, gives priority to standard signals in this case."
6115 msgstr ""
6116
6117 #. type: Plain text
6118 #: build/C/man7/signal.7:448
6119 msgid ""
6120 "According to POSIX, an implementation should permit at least "
6121 "B<_POSIX_SIGQUEUE_MAX> (32) real-time signals to be queued to a process.  "
6122 "However, Linux does things differently.  In kernels up to and including "
6123 "2.6.7, Linux imposes a system-wide limit on the number of queued real-time "
6124 "signals for all processes.  This limit can be viewed and (with privilege) "
6125 "changed via the I</proc/sys/kernel/rtsig-max> file.  A related file, "
6126 "I</proc/sys/kernel/rtsig-nr>, can be used to find out how many real-time "
6127 "signals are currently queued.  In Linux 2.6.8, these I</proc> interfaces "
6128 "were replaced by the B<RLIMIT_SIGPENDING> resource limit, which specifies a "
6129 "per-user limit for queued signals; see B<setrlimit>(2)  for further details."
6130 msgstr ""
6131
6132 #. type: SS
6133 #: build/C/man7/signal.7:448
6134 #, no-wrap
6135 msgid "Async-signal-safe functions"
6136 msgstr ""
6137
6138 #. type: Plain text
6139 #: build/C/man7/signal.7:457
6140 msgid ""
6141 "A signal handler function must be very careful, since processing elsewhere "
6142 "may be interrupted at some arbitrary point in the execution of the program.  "
6143 "POSIX has the concept of \"safe function\".  If a signal interrupts the "
6144 "execution of an unsafe function, and I<handler> calls an unsafe function, "
6145 "then the behavior of the program is undefined."
6146 msgstr ""
6147
6148 #. type: Plain text
6149 #: build/C/man7/signal.7:461
6150 msgid ""
6151 "POSIX.1-2004 (also known as POSIX.1-2001 Technical Corrigendum 2)  requires "
6152 "an implementation to guarantee that the following functions can be safely "
6153 "called inside a signal handler:"
6154 msgstr ""
6155
6156 #. type: Plain text
6157 #: build/C/man7/signal.7:582
6158 #, no-wrap
6159 msgid ""
6160 "_Exit()\n"
6161 "_exit()\n"
6162 "abort()\n"
6163 "accept()\n"
6164 "access()\n"
6165 "aio_error()\n"
6166 "aio_return()\n"
6167 "aio_suspend()\n"
6168 "alarm()\n"
6169 "bind()\n"
6170 "cfgetispeed()\n"
6171 "cfgetospeed()\n"
6172 "cfsetispeed()\n"
6173 "cfsetospeed()\n"
6174 "chdir()\n"
6175 "chmod()\n"
6176 "chown()\n"
6177 "clock_gettime()\n"
6178 "close()\n"
6179 "connect()\n"
6180 "creat()\n"
6181 "dup()\n"
6182 "dup2()\n"
6183 "execle()\n"
6184 "execve()\n"
6185 "fchmod()\n"
6186 "fchown()\n"
6187 "fcntl()\n"
6188 "fdatasync()\n"
6189 "fork()\n"
6190 "fpathconf()\n"
6191 "fstat()\n"
6192 "fsync()\n"
6193 "ftruncate()\n"
6194 "getegid()\n"
6195 "geteuid()\n"
6196 "getgid()\n"
6197 "getgroups()\n"
6198 "getpeername()\n"
6199 "getpgrp()\n"
6200 "getpid()\n"
6201 "getppid()\n"
6202 "getsockname()\n"
6203 "getsockopt()\n"
6204 "getuid()\n"
6205 "kill()\n"
6206 "link()\n"
6207 "listen()\n"
6208 "lseek()\n"
6209 "lstat()\n"
6210 "mkdir()\n"
6211 "mkfifo()\n"
6212 "open()\n"
6213 "pathconf()\n"
6214 "pause()\n"
6215 "pipe()\n"
6216 "poll()\n"
6217 "posix_trace_event()\n"
6218 "pselect()\n"
6219 "raise()\n"
6220 "read()\n"
6221 "readlink()\n"
6222 "recv()\n"
6223 "recvfrom()\n"
6224 "recvmsg()\n"
6225 "rename()\n"
6226 "rmdir()\n"
6227 "select()\n"
6228 "sem_post()\n"
6229 "send()\n"
6230 "sendmsg()\n"
6231 "sendto()\n"
6232 "setgid()\n"
6233 "setpgid()\n"
6234 "setsid()\n"
6235 "setsockopt()\n"
6236 "setuid()\n"
6237 "shutdown()\n"
6238 "sigaction()\n"
6239 "sigaddset()\n"
6240 "sigdelset()\n"
6241 "sigemptyset()\n"
6242 "sigfillset()\n"
6243 "sigismember()\n"
6244 "signal()\n"
6245 "sigpause()\n"
6246 "sigpending()\n"
6247 "sigprocmask()\n"
6248 "sigqueue()\n"
6249 "sigset()\n"
6250 "sigsuspend()\n"
6251 "sleep()\n"
6252 "sockatmark()\n"
6253 "socket()\n"
6254 "socketpair()\n"
6255 "stat()\n"
6256 "symlink()\n"
6257 "sysconf()\n"
6258 "tcdrain()\n"
6259 "tcflow()\n"
6260 "tcflush()\n"
6261 "tcgetattr()\n"
6262 "tcgetpgrp()\n"
6263 "tcsendbreak()\n"
6264 "tcsetattr()\n"
6265 "tcsetpgrp()\n"
6266 "time()\n"
6267 "timer_getoverrun()\n"
6268 "timer_gettime()\n"
6269 "timer_settime()\n"
6270 "times()\n"
6271 "umask()\n"
6272 "uname()\n"
6273 "unlink()\n"
6274 "utime()\n"
6275 "wait()\n"
6276 "waitpid()\n"
6277 "write()\n"
6278 msgstr ""
6279
6280 #. type: Plain text
6281 #: build/C/man7/signal.7:587
6282 msgid ""
6283 "POSIX.1-2008 removes fpathconf(), pathconf(), and sysconf()  from the above "
6284 "list, and adds the following functions:"
6285 msgstr ""
6286
6287 #. type: Plain text
6288 #: build/C/man7/signal.7:610
6289 #, no-wrap
6290 msgid ""
6291 "execl()\n"
6292 "execv()\n"
6293 "faccessat()\n"
6294 "fchmodat()\n"
6295 "fchownat()\n"
6296 "fexecve()\n"
6297 "fstatat()\n"
6298 "futimens()\n"
6299 "linkat()\n"
6300 "mkdirat()\n"
6301 "mkfifoat()\n"
6302 "mknod()\n"
6303 "mknodat()\n"
6304 "openat()\n"
6305 "readlinkat()\n"
6306 "renameat()\n"
6307 "symlinkat()\n"
6308 "unlinkat()\n"
6309 "utimensat()\n"
6310 "utimes()\n"
6311 msgstr ""
6312
6313 #. type: SS
6314 #: build/C/man7/signal.7:612
6315 #, no-wrap
6316 msgid "Interruption of system calls and library functions by signal handlers"
6317 msgstr ""
6318
6319 #. type: Plain text
6320 #: build/C/man7/signal.7:615
6321 msgid ""
6322 "If a signal handler is invoked while a system call or library function call "
6323 "is blocked, then either:"
6324 msgstr ""
6325
6326 #. type: Plain text
6327 #: build/C/man7/signal.7:617
6328 msgid "the call is automatically restarted after the signal handler returns; or"
6329 msgstr ""
6330
6331 #. type: Plain text
6332 #: build/C/man7/signal.7:620
6333 msgid "the call fails with the error B<EINTR>."
6334 msgstr ""
6335
6336 #. type: Plain text
6337 #: build/C/man7/signal.7:628
6338 msgid ""
6339 "Which of these two behaviors occurs depends on the interface and whether or "
6340 "not the signal handler was established using the B<SA_RESTART> flag (see "
6341 "B<sigaction>(2)).  The details vary across UNIX systems; below, the details "
6342 "for Linux."
6343 msgstr ""
6344
6345 #.  The following system calls use ERESTARTSYS,
6346 #.  so that they are restartable
6347 #. type: Plain text
6348 #: build/C/man7/signal.7:637
6349 msgid ""
6350 "If a blocked call to one of the following interfaces is interrupted by a "
6351 "signal handler, then the call will be automatically restarted after the "
6352 "signal handler returns if the B<SA_RESTART> flag was used; otherwise the "
6353 "call will fail with the error B<EINTR>:"
6354 msgstr ""
6355
6356 #. type: Plain text
6357 #: build/C/man7/signal.7:653
6358 msgid ""
6359 "B<read>(2), B<readv>(2), B<write>(2), B<writev>(2), and B<ioctl>(2)  calls "
6360 "on \"slow\" devices.  A \"slow\" device is one where the I/O call may block "
6361 "for an indefinite time, for example, a terminal, pipe, or socket.  (A disk "
6362 "is not a slow device according to this definition.)  If an I/O call on a "
6363 "slow device has already transferred some data by the time it is interrupted "
6364 "by a signal handler, then the call will return a success status (normally, "
6365 "the number of bytes transferred)."
6366 msgstr ""
6367
6368 #. type: Plain text
6369 #: build/C/man7/signal.7:657
6370 msgid "B<open>(2), if it can block (e.g., when opening a FIFO; see B<fifo>(7))."
6371 msgstr ""
6372
6373 #. type: Plain text
6374 #: build/C/man7/signal.7:664
6375 msgid "B<wait>(2), B<wait3>(2), B<wait4>(2), B<waitid>(2), and B<waitpid>(2)."
6376 msgstr ""
6377
6378 #.  If a timeout (setsockopt()) is in effect on the socket, then these
6379 #.  system calls switch to using EINTR.  Consequently, they and are not
6380 #.  automatically restarted, and they show the stop/cont behavior
6381 #.  described below.  (Verified from 2.6.26 source, and by experiment; mtk)
6382 #. type: Plain text
6383 #: build/C/man7/signal.7:680
6384 msgid ""
6385 "Socket interfaces: B<accept>(2), B<connect>(2), B<recv>(2), B<recvfrom>(2), "
6386 "B<recvmsg>(2), B<send>(2), B<sendto>(2), and B<sendmsg>(2), unless a timeout "
6387 "has been set on the socket (see below)."
6388 msgstr ""
6389
6390 #. type: Plain text
6391 #: build/C/man7/signal.7:686
6392 msgid "File locking interfaces: B<flock>(2)  and B<fcntl>(2)  B<F_SETLKW>."
6393 msgstr ""
6394
6395 #. type: Plain text
6396 #: build/C/man7/signal.7:693
6397 msgid ""
6398 "POSIX message queue interfaces: B<mq_receive>(3), B<mq_timedreceive>(3), "
6399 "B<mq_send>(3), and B<mq_timedsend>(3)."
6400 msgstr ""
6401
6402 #. type: Plain text
6403 #: build/C/man7/signal.7:698
6404 msgid ""
6405 "B<futex>(2)  B<FUTEX_WAIT> (since Linux 2.6.22; beforehand, always failed "
6406 "with B<EINTR>)."
6407 msgstr ""
6408
6409 #. type: Plain text
6410 #: build/C/man7/signal.7:705
6411 msgid ""
6412 "POSIX semaphore interfaces: B<sem_wait>(3)  and B<sem_timedwait>(3)  (since "
6413 "Linux 2.6.22; beforehand, always failed with B<EINTR>)."
6414 msgstr ""
6415
6416 #.  These are the system calls that give EINTR or ERESTARTNOHAND
6417 #.  on interruption by a signal handler.
6418 #. type: Plain text
6419 #: build/C/man7/signal.7:716
6420 msgid ""
6421 "The following interfaces are never restarted after being interrupted by a "
6422 "signal handler, regardless of the use of B<SA_RESTART>; they always fail "
6423 "with the error B<EINTR> when interrupted by a signal handler:"
6424 msgstr ""
6425
6426 #. type: Plain text
6427 #: build/C/man7/signal.7:736 build/C/man7/signal.7:810
6428 msgid ""
6429 "Socket interfaces, when a timeout has been set on the socket using "
6430 "B<setsockopt>(2): B<accept>(2), B<recv>(2), B<recvfrom>(2), and "
6431 "B<recvmsg>(2), if a receive timeout (B<SO_RCVTIMEO>)  has been set; "
6432 "B<connect>(2), B<send>(2), B<sendto>(2), and B<sendmsg>(2), if a send "
6433 "timeout (B<SO_SNDTIMEO>)  has been set."
6434 msgstr ""
6435
6436 #. type: Plain text
6437 #: build/C/man7/signal.7:743
6438 msgid ""
6439 "Interfaces used to wait for signals: B<pause>(2), B<sigsuspend>(2), "
6440 "B<sigtimedwait>(2), and B<sigwaitinfo>(2)."
6441 msgstr ""
6442
6443 #. type: Plain text
6444 #: build/C/man7/signal.7:752
6445 msgid ""
6446 "File descriptor multiplexing interfaces: B<epoll_wait>(2), "
6447 "B<epoll_pwait>(2), B<poll>(2), B<ppoll>(2), B<select>(2), and B<pselect>(2)."
6448 msgstr ""
6449
6450 #.  On some other systems, SA_RESTART does restart these system calls
6451 #. type: Plain text
6452 #: build/C/man7/signal.7:760
6453 msgid ""
6454 "System V IPC interfaces: B<msgrcv>(2), B<msgsnd>(2), B<semop>(2), and "
6455 "B<semtimedop>(2)."
6456 msgstr ""
6457
6458 #. type: Plain text
6459 #: build/C/man7/signal.7:766
6460 msgid "Sleep interfaces: B<clock_nanosleep>(2), B<nanosleep>(2), and B<usleep>(3)."
6461 msgstr ""
6462
6463 #. type: Plain text
6464 #: build/C/man7/signal.7:771 build/C/man7/signal.7:824
6465 msgid "B<read>(2)  from an B<inotify>(7)  file descriptor."
6466 msgstr ""
6467
6468 #. type: Plain text
6469 #: build/C/man7/signal.7:773
6470 msgid "B<io_getevents>(2)."
6471 msgstr ""
6472
6473 #. type: Plain text
6474 #: build/C/man7/signal.7:779
6475 msgid ""
6476 "The B<sleep>(3)  function is also never restarted if interrupted by a "
6477 "handler, but gives a success return: the number of seconds remaining to "
6478 "sleep."
6479 msgstr ""
6480
6481 #. type: SS
6482 #: build/C/man7/signal.7:779
6483 #, no-wrap
6484 msgid "Interruption of system calls and library functions by stop signals"
6485 msgstr ""
6486
6487 #. type: Plain text
6488 #: build/C/man7/signal.7:788
6489 msgid ""
6490 "On Linux, even in the absence of signal handlers, certain blocking "
6491 "interfaces can fail with the error B<EINTR> after the process is stopped by "
6492 "one of the stop signals and then resumed via B<SIGCONT>.  This behavior is "
6493 "not sanctioned by POSIX.1, and doesn't occur on other systems."
6494 msgstr ""
6495
6496 #. type: Plain text
6497 #: build/C/man7/signal.7:790
6498 msgid "The Linux interfaces that display this behavior are:"
6499 msgstr ""
6500
6501 #. type: Plain text
6502 #: build/C/man7/signal.7:813
6503 msgid "B<epoll_wait>(2), B<epoll_pwait>(2)."
6504 msgstr ""
6505
6506 #. type: Plain text
6507 #: build/C/man7/signal.7:816
6508 msgid "B<semop>(2), B<semtimedop>(2)."
6509 msgstr ""
6510
6511 #. type: Plain text
6512 #: build/C/man7/signal.7:819
6513 msgid "B<sigtimedwait>(2), B<sigwaitinfo>(2)."
6514 msgstr ""
6515
6516 #. type: Plain text
6517 #: build/C/man7/signal.7:830
6518 msgid ""
6519 "Linux 2.6.21 and earlier: B<futex>(2)  B<FUTEX_WAIT>, B<sem_timedwait>(3), "
6520 "B<sem_wait>(3)."
6521 msgstr ""
6522
6523 #. type: Plain text
6524 #: build/C/man7/signal.7:834
6525 msgid "Linux 2.6.8 and earlier: B<msgrcv>(2), B<msgsnd>(2)."
6526 msgstr ""
6527
6528 #. type: Plain text
6529 #: build/C/man7/signal.7:837
6530 msgid "Linux 2.4 and earlier: B<nanosleep>(2)."
6531 msgstr ""
6532
6533 #.  It must be a *very* long time since this was true:
6534 #.  .SH BUGS
6535 #.  .B SIGIO
6536 #.  and
6537 #.  .B SIGLOST
6538 #.  have the same value.
6539 #.  The latter is commented out in the kernel source, but
6540 #.  the build process of some software still thinks that
6541 #.  signal 29 is
6542 #.  .BR SIGLOST .
6543 #. type: Plain text
6544 #: build/C/man7/signal.7:850
6545 msgid "POSIX.1, except as noted."
6546 msgstr ""
6547
6548 #. type: Plain text
6549 #: build/C/man7/signal.7:884
6550 msgid ""
6551 "B<kill>(1), B<getrlimit>(2), B<kill>(2), B<killpg>(2), "
6552 "B<restart_syscall>(2), B<rt_sigqueueinfo>(2), B<setitimer>(2), "
6553 "B<setrlimit>(2), B<sgetmask>(2), B<sigaction>(2), B<sigaltstack>(2), "
6554 "B<signal>(2), B<signalfd>(2), B<sigpending>(2), B<sigprocmask>(2), "
6555 "B<sigsuspend>(2), B<sigwaitinfo>(2), B<abort>(3), B<bsd_signal>(3), "
6556 "B<longjmp>(3), B<raise>(3), B<pthread_sigqueue>(3), B<sigqueue>(3), "
6557 "B<sigset>(3), B<sigsetops>(3), B<sigvec>(3), B<sigwait>(3), B<strsignal>(3), "
6558 "B<sysv_signal>(3), B<core>(5), B<proc>(5), B<pthreads>(7), B<sigevent>(7)"
6559 msgstr ""
6560
6561 #. type: TH
6562 #: build/C/man2/signalfd.2:20
6563 #, no-wrap
6564 msgid "SIGNALFD"
6565 msgstr ""
6566
6567 #. type: TH
6568 #: build/C/man2/signalfd.2:20
6569 #, no-wrap
6570 msgid "2009-01-13"
6571 msgstr ""
6572
6573 #. type: Plain text
6574 #: build/C/man2/signalfd.2:23
6575 msgid "signalfd - create a file descriptor for accepting signals"
6576 msgstr ""
6577
6578 #. type: Plain text
6579 #: build/C/man2/signalfd.2:25
6580 msgid "B<#include E<lt>sys/signalfd.hE<gt>>"
6581 msgstr ""
6582
6583 #. type: Plain text
6584 #: build/C/man2/signalfd.2:27
6585 msgid "B<int signalfd(int >I<fd>B<, const sigset_t *>I<mask>B<, int >I<flags>B<);>"
6586 msgstr ""
6587
6588 #. type: Plain text
6589 #: build/C/man2/signalfd.2:38
6590 msgid ""
6591 "B<signalfd>()  creates a file descriptor that can be used to accept signals "
6592 "targeted at the caller.  This provides an alternative to the use of a signal "
6593 "handler or B<sigwaitinfo>(2), and has the advantage that the file descriptor "
6594 "may be monitored by B<select>(2), B<poll>(2), and B<epoll>(7)."
6595 msgstr ""
6596
6597 #. type: Plain text
6598 #: build/C/man2/signalfd.2:58
6599 msgid ""
6600 "The I<mask> argument specifies the set of signals that the caller wishes to "
6601 "accept via the file descriptor.  This argument is a signal set whose "
6602 "contents can be initialized using the macros described in B<sigsetops>(3).  "
6603 "Normally, the set of signals to be received via the file descriptor should "
6604 "be blocked using B<sigprocmask>(2), to prevent the signals being handled "
6605 "according to their default dispositions.  It is not possible to receive "
6606 "B<SIGKILL> or B<SIGSTOP> signals via a signalfd file descriptor; these "
6607 "signals are silently ignored if specified in I<mask>."
6608 msgstr ""
6609
6610 #. type: Plain text
6611 #: build/C/man2/signalfd.2:72
6612 msgid ""
6613 "If the I<fd> argument is -1, then the call creates a new file descriptor and "
6614 "associates the signal set specified in I<mask> with that descriptor.  If "
6615 "I<fd> is not -1, then it must specify a valid existing signalfd file "
6616 "descriptor, and I<mask> is used to replace the signal set associated with "
6617 "that descriptor."
6618 msgstr ""
6619
6620 #. type: Plain text
6621 #: build/C/man2/signalfd.2:77
6622 msgid ""
6623 "Starting with Linux 2.6.27, the following values may be bitwise ORed in "
6624 "I<flags> to change the behaviour of B<signalfd>():"
6625 msgstr ""
6626
6627 #. type: TP
6628 #: build/C/man2/signalfd.2:77
6629 #, no-wrap
6630 msgid "B<SFD_NONBLOCK>"
6631 msgstr ""
6632
6633 #. type: TP
6634 #: build/C/man2/signalfd.2:85
6635 #, no-wrap
6636 msgid "B<SFD_CLOEXEC>"
6637 msgstr ""
6638
6639 #. type: Plain text
6640 #: build/C/man2/signalfd.2:102
6641 msgid ""
6642 "B<signalfd>()  returns a file descriptor that supports the following "
6643 "operations:"
6644 msgstr ""
6645
6646 #. type: Plain text
6647 #: build/C/man2/signalfd.2:121
6648 msgid ""
6649 "If one or more of the signals specified in I<mask> is pending for the "
6650 "process, then the buffer supplied to B<read>(2)  is used to return one or "
6651 "more I<signalfd_siginfo> structures (see below) that describe the signals.  "
6652 "The B<read>(2)  returns information for as many signals as are pending and "
6653 "will fit in the supplied buffer.  The buffer must be at least "
6654 "I<sizeof(struct signalfd_siginfo)> bytes.  The return value of the "
6655 "B<read>(2)  is the total number of bytes read."
6656 msgstr ""
6657
6658 #. type: Plain text
6659 #: build/C/man2/signalfd.2:129
6660 msgid ""
6661 "As a consequence of the B<read>(2), the signals are consumed, so that they "
6662 "are no longer pending for the process (i.e., will not be caught by signal "
6663 "handlers, and cannot be accepted using B<sigwaitinfo>(2))."
6664 msgstr ""
6665
6666 #. type: Plain text
6667 #: build/C/man2/signalfd.2:140
6668 msgid ""
6669 "If none of the signals in I<mask> is pending for the process, then the "
6670 "B<read>(2)  either blocks until one of the signals in I<mask> is generated "
6671 "for the process, or fails with the error B<EAGAIN> if the file descriptor "
6672 "has been made nonblocking."
6673 msgstr ""
6674
6675 #. type: Plain text
6676 #: build/C/man2/signalfd.2:153
6677 msgid ""
6678 "The file descriptor is readable (the B<select>(2)  I<readfds> argument; the "
6679 "B<poll>(2)  B<POLLIN> flag)  if one or more of the signals in I<mask> is "
6680 "pending for the process."
6681 msgstr ""
6682
6683 #. type: Plain text
6684 #: build/C/man2/signalfd.2:160
6685 msgid ""
6686 "The signalfd file descriptor also supports the other file-descriptor "
6687 "multiplexing APIs: B<pselect>(2), B<ppoll>(2), and B<epoll>(7)."
6688 msgstr ""
6689
6690 #. type: Plain text
6691 #: build/C/man2/signalfd.2:165
6692 msgid ""
6693 "When the file descriptor is no longer required it should be closed.  When "
6694 "all file descriptors associated with the same signalfd object have been "
6695 "closed, the resources for object are freed by the kernel."
6696 msgstr ""
6697
6698 #. type: SS
6699 #: build/C/man2/signalfd.2:165
6700 #, no-wrap
6701 msgid "The signalfd_siginfo structure"
6702 msgstr ""
6703
6704 #. type: Plain text
6705 #: build/C/man2/signalfd.2:171
6706 msgid ""
6707 "The format of the I<signalfd_siginfo> structure(s) returned by B<read>(2)s "
6708 "from a signalfd file descriptor is as follows:"
6709 msgstr ""
6710
6711 #.  ssi_trapno is unused on most arches
6712 #.  FIXME Since Linux 2.6.37 there is 'uint16_t ssi_addr_lsb'
6713 #.  which is not yet documented
6714 #. type: Plain text
6715 #: build/C/man2/signalfd.2:198
6716 #, no-wrap
6717 msgid ""
6718 "struct signalfd_siginfo {\n"
6719 "    uint32_t ssi_signo;   /* Signal number */\n"
6720 "    int32_t  ssi_errno;   /* Error number (unused) */\n"
6721 "    int32_t  ssi_code;    /* Signal code */\n"
6722 "    uint32_t ssi_pid;     /* PID of sender */\n"
6723 "    uint32_t ssi_uid;     /* Real UID of sender */\n"
6724 "    int32_t  ssi_fd;      /* File descriptor (SIGIO) */\n"
6725 "    uint32_t ssi_tid;     /* Kernel timer ID (POSIX timers)\n"
6726 "    uint32_t ssi_band;    /* Band event (SIGIO) */\n"
6727 "    uint32_t ssi_overrun; /* POSIX timer overrun count */\n"
6728 "    uint32_t ssi_trapno;  /* Trap number that caused signal */\n"
6729 "    int32_t  ssi_status;  /* Exit status or signal (SIGCHLD) */\n"
6730 "    int32_t  ssi_int;     /* Integer sent by sigqueue(3) */\n"
6731 "    uint64_t ssi_ptr;     /* Pointer sent by sigqueue(3) */\n"
6732 "    uint64_t ssi_utime;   /* User CPU time consumed (SIGCHLD) */\n"
6733 "    uint64_t ssi_stime;   /* System CPU time consumed (SIGCHLD) */\n"
6734 "    uint64_t ssi_addr;    /* Address that generated signal\n"
6735 "                             (for hardware-generated signals) */\n"
6736 "    uint8_t  pad[I<X>];      /* Pad size to 128 bytes (allow for\n"
6737 "                              additional fields in the future) */\n"
6738 "};\n"
6739 msgstr ""
6740
6741 #. type: Plain text
6742 #: build/C/man2/signalfd.2:221
6743 msgid ""
6744 "Each of the fields in this structure is analogous to the similarly named "
6745 "field in the I<siginfo_t> structure.  The I<siginfo_t> structure is "
6746 "described in B<sigaction>(2).  Not all fields in the returned "
6747 "I<signalfd_siginfo> structure will be valid for a specific signal; the set "
6748 "of valid fields can be determined from the value returned in the I<ssi_code> "
6749 "field.  This field is the analog of the I<siginfo_t> I<si_code> field; see "
6750 "B<sigaction>(2)  for details."
6751 msgstr ""
6752
6753 #. type: SS
6754 #: build/C/man2/signalfd.2:221 build/C/man2/timerfd_create.2:269
6755 #, no-wrap
6756 msgid "fork(2) semantics"
6757 msgstr ""
6758
6759 #. type: Plain text
6760 #: build/C/man2/signalfd.2:229
6761 msgid ""
6762 "After a B<fork>(2), the child inherits a copy of the signalfd file "
6763 "descriptor.  A B<read>(2)  from the file descriptor in the child will return "
6764 "information about signals queued to the child."
6765 msgstr ""
6766
6767 #. type: SS
6768 #: build/C/man2/signalfd.2:229 build/C/man2/timerfd_create.2:281
6769 #, no-wrap
6770 msgid "execve(2) semantics"
6771 msgstr ""
6772
6773 #. type: Plain text
6774 #: build/C/man2/signalfd.2:241
6775 msgid ""
6776 "Just like any other file descriptor, a signalfd file descriptor remains open "
6777 "across an B<execve>(2), unless it has been marked for close-on-exec (see "
6778 "B<fcntl>(2)).  Any signals that were available for reading before the "
6779 "B<execve>(2)  remain available to the newly loaded program.  (This is "
6780 "analogous to traditional signal semantics, where a blocked signal that is "
6781 "pending remains pending across an B<execve>(2).)"
6782 msgstr ""
6783
6784 #. type: SS
6785 #: build/C/man2/signalfd.2:241
6786 #, no-wrap
6787 msgid "Thread semantics"
6788 msgstr ""
6789
6790 #. type: Plain text
6791 #: build/C/man2/signalfd.2:251
6792 msgid ""
6793 "The semantics of signalfd file descriptors in a multithreaded program mirror "
6794 "the standard semantics for signals.  In other words, when a thread reads "
6795 "from a signalfd file descriptor, it will read the signals that are directed "
6796 "to the thread itself and the signals that are directed to the process (i.e., "
6797 "the entire thread group).  (A thread will not be able to read signals that "
6798 "are directed to other threads in the process.)"
6799 msgstr ""
6800
6801 #. type: Plain text
6802 #: build/C/man2/signalfd.2:265
6803 msgid ""
6804 "On success, B<signalfd>()  returns a signalfd file descriptor; this is "
6805 "either a new file descriptor (if I<fd> was -1), or I<fd> if I<fd> was a "
6806 "valid signalfd file descriptor.  On error, -1 is returned and I<errno> is "
6807 "set to indicate the error."
6808 msgstr ""
6809
6810 #. type: TP
6811 #: build/C/man2/signalfd.2:266 build/C/man2/timerfd_create.2:338
6812 #, no-wrap
6813 msgid "B<EBADF>"
6814 msgstr ""
6815
6816 #. type: Plain text
6817 #: build/C/man2/signalfd.2:271
6818 msgid "The I<fd> file descriptor is not a valid file descriptor."
6819 msgstr ""
6820
6821 #.  or, the
6822 #.  .I sizemask
6823 #.  argument is not equal to
6824 #.  .IR sizeof(sigset_t) ;
6825 #. type: Plain text
6826 #: build/C/man2/signalfd.2:279
6827 msgid "I<fd> is not a valid signalfd file descriptor."
6828 msgstr ""
6829
6830 #. type: Plain text
6831 #: build/C/man2/signalfd.2:286 build/C/man2/timerfd_create.2:320
6832 msgid "I<flags> is invalid; or, in Linux 2.6.26 or earlier, I<flags> is nonzero."
6833 msgstr ""
6834
6835 #. type: Plain text
6836 #: build/C/man2/signalfd.2:289 build/C/man2/timerfd_create.2:323
6837 msgid "The per-process limit of open file descriptors has been reached."
6838 msgstr ""
6839
6840 #. type: Plain text
6841 #: build/C/man2/signalfd.2:299
6842 msgid "There was insufficient memory to create a new signalfd file descriptor."
6843 msgstr ""
6844
6845 #.  signalfd() is in glibc 2.7, but reportedly does not build
6846 #. type: Plain text
6847 #: build/C/man2/signalfd.2:307
6848 msgid ""
6849 "B<signalfd>()  is available on Linux since kernel 2.6.22.  Working support "
6850 "is provided in glibc since version 2.8.  The B<signalfd4>()  system call "
6851 "(see NOTES) is available on Linux since kernel 2.6.27."
6852 msgstr ""
6853
6854 #. type: Plain text
6855 #: build/C/man2/signalfd.2:312
6856 msgid "B<signalfd>()  and B<signalfd4>()  are Linux-specific."
6857 msgstr ""
6858
6859 #. type: Plain text
6860 #: build/C/man2/signalfd.2:322
6861 msgid ""
6862 "The underlying Linux system call requires an additional argument, I<size_t "
6863 "sizemask>, which specifies the size of the I<mask> argument.  The glibc "
6864 "B<signalfd>()  wrapper function does not include this argument, since it "
6865 "provides the required value for the underlying system call."
6866 msgstr ""
6867
6868 #. type: Plain text
6869 #: build/C/man2/signalfd.2:336
6870 msgid ""
6871 "A process can create multiple signalfd file descriptors.  This makes it "
6872 "possible to accept different signals on different file descriptors.  (This "
6873 "may be useful if monitoring the file descriptors using B<select>(2), "
6874 "B<poll>(2), or B<epoll>(7): the arrival of different signals will make "
6875 "different descriptors ready.)  If a signal appears in the I<mask> of more "
6876 "than one of the file descriptors, then occurrences of that signal can be "
6877 "read (once) from any one of the descriptors."
6878 msgstr ""
6879
6880 #. type: Plain text
6881 #: build/C/man2/signalfd.2:352
6882 msgid ""
6883 "There are two underlying Linux system calls: B<signalfd>()  and the more "
6884 "recent B<signalfd4>().  The former system call does not implement a I<flags> "
6885 "argument.  The latter system call implements the I<flags> values described "
6886 "above.  Starting with glibc 2.9, the B<signalfd>()  wrapper function will "
6887 "use B<signalfd4>()  where it is available."
6888 msgstr ""
6889
6890 #.  The fix also was put into 2.6.24.5
6891 #. type: Plain text
6892 #: build/C/man2/signalfd.2:360
6893 msgid ""
6894 "In kernels before 2.6.25, the I<ssi_ptr> and I<ssi_int> fields are not "
6895 "filled in with the data accompanying a signal sent by B<sigqueue>(3)."
6896 msgstr ""
6897
6898 #. type: Plain text
6899 #: build/C/man2/signalfd.2:370
6900 msgid ""
6901 "The program below accepts the signals B<SIGINT> and B<SIGQUIT> via a "
6902 "signalfd file descriptor.  The program terminates after accepting a "
6903 "B<SIGQUIT> signal.  The following shell session demonstrates the use of the "
6904 "program:"
6905 msgstr ""
6906
6907 #. type: Plain text
6908 #: build/C/man2/signalfd.2:381
6909 #, no-wrap
6910 msgid ""
6911 "$B< ./signalfd_demo>\n"
6912 "B<^C>                   # Control-C generates SIGINT\n"
6913 "Got SIGINT\n"
6914 "B<^C>\n"
6915 "Got SIGINT\n"
6916 "B<^\\e>                    # Control-\\e generates SIGQUIT\n"
6917 "Got SIGQUIT\n"
6918 "$\n"
6919 msgstr ""
6920
6921 #. type: Plain text
6922 #: build/C/man2/signalfd.2:391
6923 #, no-wrap
6924 msgid ""
6925 "#include E<lt>sys/signalfd.hE<gt>\n"
6926 "#include E<lt>signal.hE<gt>\n"
6927 "#include E<lt>unistd.hE<gt>\n"
6928 "#include E<lt>stdlib.hE<gt>\n"
6929 "#include E<lt>stdio.hE<gt>\n"
6930 msgstr ""
6931
6932 #. type: Plain text
6933 #: build/C/man2/signalfd.2:402
6934 #, no-wrap
6935 msgid ""
6936 "int\n"
6937 "main(int argc, char *argv[])\n"
6938 "{\n"
6939 "    sigset_t mask;\n"
6940 "    int sfd;\n"
6941 "    struct signalfd_siginfo fdsi;\n"
6942 "    ssize_t s;\n"
6943 msgstr ""
6944
6945 #. type: Plain text
6946 #: build/C/man2/signalfd.2:406
6947 #, no-wrap
6948 msgid ""
6949 "    sigemptyset(&mask);\n"
6950 "    sigaddset(&mask, SIGINT);\n"
6951 "    sigaddset(&mask, SIGQUIT);\n"
6952 msgstr ""
6953
6954 #. type: Plain text
6955 #: build/C/man2/signalfd.2:409
6956 #, no-wrap
6957 msgid ""
6958 "    /* Block signals so that they aren\\(aqt handled\n"
6959 "       according to their default dispositions */\n"
6960 msgstr ""
6961
6962 #. type: Plain text
6963 #: build/C/man2/signalfd.2:412
6964 #, no-wrap
6965 msgid ""
6966 "    if (sigprocmask(SIG_BLOCK, &mask, NULL) == -1)\n"
6967 "        handle_error(\"sigprocmask\");\n"
6968 msgstr ""
6969
6970 #. type: Plain text
6971 #: build/C/man2/signalfd.2:416
6972 #, no-wrap
6973 msgid ""
6974 "    sfd = signalfd(-1, &mask, 0);\n"
6975 "    if (sfd == -1)\n"
6976 "        handle_error(\"signalfd\");\n"
6977 msgstr ""
6978
6979 #. type: Plain text
6980 #: build/C/man2/signalfd.2:421
6981 #, no-wrap
6982 msgid ""
6983 "    for (;;) {\n"
6984 "        s = read(sfd, &fdsi, sizeof(struct signalfd_siginfo));\n"
6985 "        if (s != sizeof(struct signalfd_siginfo))\n"
6986 "            handle_error(\"read\");\n"
6987 msgstr ""
6988
6989 #. type: Plain text
6990 #: build/C/man2/signalfd.2:432
6991 #, no-wrap
6992 msgid ""
6993 "        if (fdsi.ssi_signo == SIGINT) {\n"
6994 "            printf(\"Got SIGINT\\en\");\n"
6995 "        } else if (fdsi.ssi_signo == SIGQUIT) {\n"
6996 "            printf(\"Got SIGQUIT\\en\");\n"
6997 "            exit(EXIT_SUCCESS);\n"
6998 "        } else {\n"
6999 "            printf(\"Read unexpected signal\\en\");\n"
7000 "        }\n"
7001 "    }\n"
7002 "}\n"
7003 msgstr ""
7004
7005 #. type: Plain text
7006 #: build/C/man2/signalfd.2:446
7007 msgid ""
7008 "B<eventfd>(2), B<poll>(2), B<read>(2), B<select>(2), B<sigaction>(2), "
7009 "B<sigprocmask>(2), B<sigwaitinfo>(2), B<timerfd_create>(2), B<sigsetops>(3), "
7010 "B<sigwait>(3), B<epoll>(7), B<signal>(7)"
7011 msgstr ""
7012
7013 #. type: TH
7014 #: build/C/man3/sigpause.3:25
7015 #, no-wrap
7016 msgid "SIGPAUSE"
7017 msgstr ""
7018
7019 #. type: TH
7020 #: build/C/man3/sigpause.3:25
7021 #, no-wrap
7022 msgid "2010-09-12"
7023 msgstr ""
7024
7025 #. type: Plain text
7026 #: build/C/man3/sigpause.3:28
7027 msgid "sigpause - atomically release blocked signals and wait for interrupt"
7028 msgstr ""
7029
7030 #. type: Plain text
7031 #: build/C/man3/sigpause.3:33
7032 #, no-wrap
7033 msgid "B<int sigpause(int >I<sigmask>B<);  /* BSD */>\n"
7034 msgstr ""
7035
7036 #. type: Plain text
7037 #: build/C/man3/sigpause.3:35
7038 #, no-wrap
7039 msgid "B<int sigpause(int >I<sig>B<);      /* System V / UNIX 95 */>\n"
7040 msgstr ""
7041
7042 #. type: Plain text
7043 #: build/C/man3/sigpause.3:41
7044 msgid "Don't use this function.  Use B<sigsuspend>(2)  instead."
7045 msgstr ""
7046
7047 #. type: Plain text
7048 #: build/C/man3/sigpause.3:48
7049 msgid ""
7050 "The function B<sigpause>()  is designed to wait for some signal.  It changes "
7051 "the process's signal mask (set of blocked signals), and then waits for a "
7052 "signal to arrive.  Upon arrival of a signal, the original signal mask is "
7053 "restored."
7054 msgstr ""
7055
7056 #. type: Plain text
7057 #: build/C/man3/sigpause.3:56
7058 msgid ""
7059 "If B<sigpause>()  returns, it was interrupted by a signal and the return "
7060 "value is -1 with I<errno> set to B<EINTR>."
7061 msgstr ""
7062
7063 #. type: Plain text
7064 #: build/C/man3/sigpause.3:60
7065 msgid "The System V version of B<sigpause>()  is standardized in POSIX.1-2001."
7066 msgstr ""
7067
7068 #.  __xpg_sigpause: UNIX 95, spec 1170, SVID, SVr4, XPG
7069 #. type: Plain text
7070 #: build/C/man3/sigpause.3:77
7071 msgid ""
7072 "The classical BSD version of this function appeared in 4.2BSD.  It sets the "
7073 "process's signal mask to I<sigmask>.  UNIX 95 standardized the incompatible "
7074 "System V version of this function, which removes only the specified signal "
7075 "I<sig> from the process's signal mask.  The unfortunate situation with two "
7076 "incompatible functions with the same name was solved by the "
7077 "B<\\%sigsuspend>(2)  function, that takes a I<sigset_t\\ *> argument "
7078 "(instead of an I<int>)."
7079 msgstr ""
7080
7081 #. type: Plain text
7082 #: build/C/man3/sigpause.3:80
7083 msgid ""
7084 "On Linux, this routine is a system call only on the Sparc (sparc64)  "
7085 "architecture."
7086 msgstr ""
7087
7088 #. type: Plain text
7089 #: build/C/man3/sigpause.3:82
7090 msgid "Libc4 and libc5 know only about the BSD version."
7091 msgstr ""
7092
7093 #
7094 #.  For the BSD version, one usually uses a zero
7095 #.  .I sigmask
7096 #.  to indicate that no signals are to be blocked.
7097 #. type: Plain text
7098 #: build/C/man3/sigpause.3:98
7099 msgid ""
7100 "Glibc uses the BSD version if the B<_BSD_SOURCE> feature test macro is "
7101 "defined and none of B<_POSIX_SOURCE>, B<_POSIX_C_SOURCE>, B<_XOPEN_SOURCE>, "
7102 "B<_GNU_SOURCE>, or B<_SVID_SOURCE> is defined.  Otherwise, the System V "
7103 "version is used."
7104 msgstr ""
7105
7106 #. type: Plain text
7107 #: build/C/man3/sigpause.3:106
7108 msgid ""
7109 "B<kill>(2), B<sigaction>(2), B<sigprocmask>(2), B<sigsuspend>(2), "
7110 "B<sigblock>(3), B<sigvec>(3), B<feature_test_macros>(7)"
7111 msgstr ""
7112
7113 #. type: TH
7114 #: build/C/man2/sigpending.2:29
7115 #, no-wrap
7116 msgid "SIGPENDING"
7117 msgstr ""
7118
7119 #. type: Plain text
7120 #: build/C/man2/sigpending.2:32
7121 msgid "sigpending - examine pending signals"
7122 msgstr ""
7123
7124 #. type: Plain text
7125 #: build/C/man2/sigpending.2:36
7126 msgid "B<int sigpending(sigset_t *>I<set>B<);>"
7127 msgstr ""
7128
7129 #. type: Plain text
7130 #: build/C/man2/sigpending.2:45
7131 msgid ""
7132 "B<sigpending>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
7133 "_POSIX_SOURCE"
7134 msgstr ""
7135
7136 #. type: Plain text
7137 #: build/C/man2/sigpending.2:53
7138 msgid ""
7139 "B<sigpending>()  returns the set of signals that are pending for delivery to "
7140 "the calling thread (i.e., the signals which have been raised while "
7141 "blocked).  The mask of pending signals is returned in I<set>."
7142 msgstr ""
7143
7144 #. type: Plain text
7145 #: build/C/man2/sigpending.2:59
7146 msgid ""
7147 "B<sigpending>()  returns 0 on success and -1 on error.  In the event of an "
7148 "error, I<errno> is set to indicate the cause."
7149 msgstr ""
7150
7151 #. type: Plain text
7152 #: build/C/man2/sigpending.2:64
7153 msgid ""
7154 "I<set> points to memory which is not a valid part of the process address "
7155 "space."
7156 msgstr ""
7157
7158 #. type: Plain text
7159 #: build/C/man2/sigpending.2:75
7160 msgid ""
7161 "The set of signals that is pending for a thread is the union of the set of "
7162 "signals that is pending for that thread and the set of signals that is "
7163 "pending for the process as a whole; see B<signal>(7)."
7164 msgstr ""
7165
7166 #. type: Plain text
7167 #: build/C/man2/sigpending.2:87
7168 msgid ""
7169 "In versions of glibc up to and including 2.2.1, there is a bug in the "
7170 "wrapper function for B<sigpending>()  which means that information about "
7171 "pending real-time signals is not correctly returned."
7172 msgstr ""
7173
7174 #. type: Plain text
7175 #: build/C/man2/sigpending.2:95
7176 msgid ""
7177 "B<kill>(2), B<sigaction>(2), B<signal>(2), B<sigprocmask>(2), "
7178 "B<sigsuspend>(2), B<sigsetops>(3), B<signal>(7)"
7179 msgstr ""
7180
7181 #. type: TH
7182 #: build/C/man2/sigprocmask.2:29
7183 #, no-wrap
7184 msgid "SIGPROCMASK"
7185 msgstr ""
7186
7187 #. type: Plain text
7188 #: build/C/man2/sigprocmask.2:32
7189 msgid "sigprocmask - examine and change blocked signals"
7190 msgstr ""
7191
7192 #. type: Plain text
7193 #: build/C/man2/sigprocmask.2:37
7194 msgid ""
7195 "B<int sigprocmask(int >I<how>B<, const sigset_t *>I<set>B<,> B<sigset_t "
7196 "*>I<oldset>B<);>"
7197 msgstr ""
7198
7199 #. type: Plain text
7200 #: build/C/man2/sigprocmask.2:46
7201 msgid ""
7202 "B<sigprocmask>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
7203 "_POSIX_SOURCE"
7204 msgstr ""
7205
7206 #. type: Plain text
7207 #: build/C/man2/sigprocmask.2:55
7208 msgid ""
7209 "B<sigprocmask>()  is used to fetch and/or change the signal mask of the "
7210 "calling thread.  The signal mask is the set of signals whose delivery is "
7211 "currently blocked for the caller (see also B<signal>(7)  for more details)."
7212 msgstr ""
7213
7214 #. type: Plain text
7215 #: build/C/man2/sigprocmask.2:59
7216 msgid "The behavior of the call is dependent on the value of I<how>, as follows."
7217 msgstr ""
7218
7219 #. type: TP
7220 #: build/C/man2/sigprocmask.2:59
7221 #, no-wrap
7222 msgid "B<SIG_BLOCK>"
7223 msgstr ""
7224
7225 #. type: Plain text
7226 #: build/C/man2/sigprocmask.2:64
7227 msgid ""
7228 "The set of blocked signals is the union of the current set and the I<set> "
7229 "argument."
7230 msgstr ""
7231
7232 #. type: TP
7233 #: build/C/man2/sigprocmask.2:64
7234 #, no-wrap
7235 msgid "B<SIG_UNBLOCK>"
7236 msgstr ""
7237
7238 #. type: Plain text
7239 #: build/C/man2/sigprocmask.2:70
7240 msgid ""
7241 "The signals in I<set> are removed from the current set of blocked signals.  "
7242 "It is permissible to attempt to unblock a signal which is not blocked."
7243 msgstr ""
7244
7245 #. type: TP
7246 #: build/C/man2/sigprocmask.2:70
7247 #, no-wrap
7248 msgid "B<SIG_SETMASK>"
7249 msgstr ""
7250
7251 #. type: Plain text
7252 #: build/C/man2/sigprocmask.2:74
7253 msgid "The set of blocked signals is set to the argument I<set>."
7254 msgstr ""
7255
7256 #. type: Plain text
7257 #: build/C/man2/sigprocmask.2:79
7258 msgid ""
7259 "If I<oldset> is non-NULL, the previous value of the signal mask is stored in "
7260 "I<oldset>."
7261 msgstr ""
7262
7263 #. type: Plain text
7264 #: build/C/man2/sigprocmask.2:88
7265 msgid ""
7266 "If I<set> is NULL, then the signal mask is unchanged (i.e., I<how> is "
7267 "ignored), but the current value of the signal mask is nevertheless returned "
7268 "in I<oldset> (if it is not NULL)."
7269 msgstr ""
7270
7271 #. type: Plain text
7272 #: build/C/man2/sigprocmask.2:93
7273 msgid ""
7274 "The use of B<sigprocmask>()  is unspecified in a multithreaded process; see "
7275 "B<pthread_sigmask>(3)."
7276 msgstr ""
7277
7278 #. type: Plain text
7279 #: build/C/man2/sigprocmask.2:99
7280 msgid ""
7281 "B<sigprocmask>()  returns 0 on success and -1 on error.  In the event of an "
7282 "error, I<errno> is set to indicate the cause."
7283 msgstr ""
7284
7285 #. type: Plain text
7286 #: build/C/man2/sigprocmask.2:107
7287 msgid ""
7288 "the I<set> or I<oldset> argument points outside the process's allocated "
7289 "address space."
7290 msgstr ""
7291
7292 #. type: Plain text
7293 #: build/C/man2/sigprocmask.2:112
7294 msgid "The value specified in I<how> was invalid."
7295 msgstr ""
7296
7297 #. type: Plain text
7298 #: build/C/man2/sigprocmask.2:118
7299 msgid ""
7300 "It is not possible to block B<SIGKILL> or B<SIGSTOP>.  Attempts to do so are "
7301 "silently ignored."
7302 msgstr ""
7303
7304 #. type: Plain text
7305 #: build/C/man2/sigprocmask.2:120
7306 msgid "Each of the threads in a process has its own signal mask."
7307 msgstr ""
7308
7309 #. type: Plain text
7310 #: build/C/man2/sigprocmask.2:140
7311 msgid ""
7312 "If B<SIGBUS>, B<SIGFPE>, B<SIGILL>, or B<SIGSEGV> are generated while they "
7313 "are blocked, the result is undefined, unless the signal was generated by "
7314 "B<kill>(2), B<sigqueue>(3), or B<raise>(3)."
7315 msgstr ""
7316
7317 #. type: Plain text
7318 #: build/C/man2/sigprocmask.2:155
7319 msgid ""
7320 "B<kill>(2), B<pause>(2), B<sigaction>(2), B<signal>(2), B<sigpending>(2), "
7321 "B<sigsuspend>(2), B<pthread_sigmask>(3), B<sigqueue>(3), B<sigsetops>(3), "
7322 "B<signal>(7)"
7323 msgstr ""
7324
7325 #. type: TH
7326 #: build/C/man3/sigqueue.3:28
7327 #, no-wrap
7328 msgid "SIGQUEUE"
7329 msgstr ""
7330
7331 #. type: TH
7332 #: build/C/man3/sigqueue.3:28
7333 #, no-wrap
7334 msgid "2012-03-25"
7335 msgstr ""
7336
7337 #. type: Plain text
7338 #: build/C/man3/sigqueue.3:31
7339 msgid "sigqueue - queue a signal and data to a process"
7340 msgstr ""
7341
7342 #. type: Plain text
7343 #: build/C/man3/sigqueue.3:35
7344 msgid ""
7345 "B<int sigqueue(pid_t >I<pid>B<, int >I<sig>B<, const union sigval "
7346 ">I<value>B<);>"
7347 msgstr ""
7348
7349 #. type: Plain text
7350 #: build/C/man3/sigqueue.3:43
7351 msgid "B<sigqueue>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
7352 msgstr ""
7353
7354 #. type: Plain text
7355 #: build/C/man3/sigqueue.3:55
7356 msgid ""
7357 "B<sigqueue>()  sends the signal specified in I<sig> to the process whose PID "
7358 "is given in I<pid>.  The permissions required to send a signal are the same "
7359 "as for B<kill>(2).  As with B<kill>(2), the null signal (0) can be used to "
7360 "check if a process with a given PID exists."
7361 msgstr ""
7362
7363 #. type: Plain text
7364 #: build/C/man3/sigqueue.3:60
7365 msgid ""
7366 "The I<value> argument is used to specify an accompanying item of data "
7367 "(either an integer or a pointer value) to be sent with the signal, and has "
7368 "the following type:"
7369 msgstr ""
7370
7371 #. type: Plain text
7372 #: build/C/man3/sigqueue.3:67
7373 #, no-wrap
7374 msgid ""
7375 "union sigval {\n"
7376 "    int   sival_int;\n"
7377 "    void *sival_ptr;\n"
7378 "};\n"
7379 msgstr ""
7380
7381 #. type: Plain text
7382 #: build/C/man3/sigqueue.3:83
7383 msgid ""
7384 "If the receiving process has installed a handler for this signal using the "
7385 "B<SA_SIGINFO> flag to B<sigaction>(2), then it can obtain this data via the "
7386 "I<si_value> field of the I<siginfo_t> structure passed as the second "
7387 "argument to the handler.  Furthermore, the I<si_code> field of that "
7388 "structure will be set to B<SI_QUEUE>."
7389 msgstr ""
7390
7391 #. type: Plain text
7392 #: build/C/man3/sigqueue.3:91
7393 msgid ""
7394 "On success, B<sigqueue>()  returns 0, indicating that the signal was "
7395 "successfully queued to the receiving process.  Otherwise -1 is returned and "
7396 "I<errno> is set to indicate the error."
7397 msgstr ""
7398
7399 #. type: Plain text
7400 #: build/C/man3/sigqueue.3:102
7401 msgid "I<sig> was invalid."
7402 msgstr ""
7403
7404 #. type: Plain text
7405 #: build/C/man3/sigqueue.3:108
7406 msgid ""
7407 "The process does not have permission to send the signal to the receiving "
7408 "process.  For the required permissions, see B<kill>(2)."
7409 msgstr ""
7410
7411 #. type: Plain text
7412 #: build/C/man3/sigqueue.3:112
7413 msgid "No process has a PID matching I<pid>."
7414 msgstr ""
7415
7416 #. type: Plain text
7417 #: build/C/man3/sigqueue.3:114
7418 msgid "This system call first appeared in Linux 2.2."
7419 msgstr ""
7420
7421 #. type: Plain text
7422 #: build/C/man3/sigqueue.3:124
7423 msgid ""
7424 "If this function results in the sending of a signal to the process that "
7425 "invoked it, and that signal was not blocked by the calling thread, and no "
7426 "other threads were willing to handle this signal (either by having it "
7427 "unblocked, or by waiting for it using B<sigwait>(3)), then at least some "
7428 "signal must be delivered to this thread before this function returns."
7429 msgstr ""
7430
7431 #. type: Plain text
7432 #: build/C/man3/sigqueue.3:139
7433 msgid ""
7434 "On Linux, this function is implemented using the B<rt_sigqueueinfo>(2)  "
7435 "system call.  The system call differs in its third argument, which is the "
7436 "I<siginfo_t> structure that will be supplied to the receiving process's "
7437 "signal handler or returned by the receiving process's B<sigtimedwait>(2)  "
7438 "call.  Inside the glibc B<sigqueue>()  wrapper, this argument, I<uinfo>, is "
7439 "initialized as follows:"
7440 msgstr ""
7441
7442 #. type: Plain text
7443 #: build/C/man3/sigqueue.3:147
7444 #, no-wrap
7445 msgid ""
7446 "uinfo.si_signo = sig;      /* argument supplied to sigqueue() */\n"
7447 "uinfo.si_code = SI_QUEUE;\n"
7448 "uinfo.si_pid = getpid();   /* Process ID of sender */\n"
7449 "uinfo.si_uid = getuid();   /* Real UID of sender */\n"
7450 "uinfo.si_value = val;      /* argument supplied to sigqueue() */\n"
7451 msgstr ""
7452
7453 #. type: Plain text
7454 #: build/C/man3/sigqueue.3:157
7455 msgid ""
7456 "B<kill>(2), B<rt_sigqueueinfo>(2), B<sigaction>(2), B<signal>(2), "
7457 "B<pthread_sigqueue>(3), B<sigwait>(3), B<signal>(7)"
7458 msgstr ""
7459
7460 #. type: TH
7461 #: build/C/man2/sigreturn.2:29
7462 #, no-wrap
7463 msgid "SIGRETURN"
7464 msgstr ""
7465
7466 #. type: Plain text
7467 #: build/C/man2/sigreturn.2:32
7468 msgid "sigreturn - return from signal handler and cleanup stack frame"
7469 msgstr ""
7470
7471 #. type: Plain text
7472 #: build/C/man2/sigreturn.2:34
7473 msgid "B<int sigreturn(unsigned long >I<__unused>B<);>"
7474 msgstr ""
7475
7476 #. type: Plain text
7477 #: build/C/man2/sigreturn.2:42
7478 msgid ""
7479 "When the Linux kernel creates the stack frame for a signal handler, a call "
7480 "to B<sigreturn>()  is inserted into the stack frame so that upon return from "
7481 "the signal handler, B<sigreturn>()  will be called."
7482 msgstr ""
7483
7484 #. type: Plain text
7485 #: build/C/man2/sigreturn.2:53
7486 msgid ""
7487 "This B<sigreturn>()  call undoes everything that was done\\(emchanging the "
7488 "process's signal mask, switching stacks (see B<sigaltstack>(2))\\(emin order "
7489 "to invoke the signal handler: it restores the process's signal mask, "
7490 "switches stacks, and restores the process's context (registers, processor "
7491 "flags), so that the process directly resumes execution at the point where it "
7492 "was interrupted by the signal."
7493 msgstr ""
7494
7495 #. type: Plain text
7496 #: build/C/man2/sigreturn.2:56
7497 msgid "B<sigreturn>()  never returns."
7498 msgstr ""
7499
7500 #. type: SH
7501 #: build/C/man2/sigreturn.2:56
7502 #, no-wrap
7503 msgid "FILES"
7504 msgstr ""
7505
7506 #. type: Plain text
7507 #: build/C/man2/sigreturn.2:58
7508 msgid "/usr/src/linux/arch/i386/kernel/signal.c"
7509 msgstr ""
7510
7511 #. type: Plain text
7512 #: build/C/man2/sigreturn.2:60
7513 msgid "/usr/src/linux/arch/alpha/kernel/entry.S"
7514 msgstr ""
7515
7516 #. type: Plain text
7517 #: build/C/man2/sigreturn.2:64
7518 msgid ""
7519 "B<sigreturn>()  is specific to Linux and should not be used in programs "
7520 "intended to be portable."
7521 msgstr ""
7522
7523 #. type: Plain text
7524 #: build/C/man2/sigreturn.2:74
7525 msgid ""
7526 "The B<sigreturn>()  call is used by the kernel to implement signal "
7527 "handlers.  It should B<never> be called directly.  Better yet, the specific "
7528 "use of the I<__unused> argument varies depending on the architecture."
7529 msgstr ""
7530
7531 #. type: Plain text
7532 #: build/C/man2/sigreturn.2:80
7533 msgid ""
7534 "B<kill>(2), B<restart_syscall>(2), B<sigaltstack>(2), B<signal>(2), "
7535 "B<signal>(7)"
7536 msgstr ""
7537
7538 #. type: TH
7539 #: build/C/man3/sigset.3:26
7540 #, no-wrap
7541 msgid "SIGSET"
7542 msgstr ""
7543
7544 #. type: Plain text
7545 #: build/C/man3/sigset.3:29
7546 msgid "sigset, sighold, sigrelse, sigignore - System V signal API"
7547 msgstr ""
7548
7549 #. type: Plain text
7550 #: build/C/man3/sigset.3:35
7551 msgid "B<sighandler_t sigset(int >I<sig>B<, sighandler_t >I<disp>B<);>"
7552 msgstr ""
7553
7554 #. type: Plain text
7555 #: build/C/man3/sigset.3:37
7556 msgid "B<int sighold(int >I<sig>B<);>"
7557 msgstr ""
7558
7559 #. type: Plain text
7560 #: build/C/man3/sigset.3:39
7561 msgid "B<int sigrelse(int >I<sig>B<);>"
7562 msgstr ""
7563
7564 #. type: Plain text
7565 #: build/C/man3/sigset.3:41
7566 msgid "B<int sigignore(int >I<sig>B<);>"
7567 msgstr ""
7568
7569 #. type: Plain text
7570 #: build/C/man3/sigset.3:52
7571 msgid "B<sigset>(), B<sighold>(), B<sigrelse>(), B<sigignore>():"
7572 msgstr ""
7573
7574 #. type: Plain text
7575 #: build/C/man3/sigset.3:56
7576 msgid "_XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
7577 msgstr ""
7578
7579 #. type: Plain text
7580 #: build/C/man3/sigset.3:65
7581 msgid ""
7582 "These functions are provided in glibc as a compatibility interface for "
7583 "programs that make use of the historical System V signal API.  This API is "
7584 "obsolete: new applications should use the POSIX signal API (B<sigaction>(2), "
7585 "B<sigprocmask>(2), etc.)"
7586 msgstr ""
7587
7588 #. type: Plain text
7589 #: build/C/man3/sigset.3:74
7590 msgid ""
7591 "The B<sigset>()  function modifies the disposition of the signal I<sig>.  "
7592 "The I<disp> argument can be the address of a signal handler function, or one "
7593 "of the following constants:"
7594 msgstr ""
7595
7596 #. type: TP
7597 #: build/C/man3/sigset.3:74
7598 #, no-wrap
7599 msgid "B<SIG_DFL>"
7600 msgstr ""
7601
7602 #. type: Plain text
7603 #: build/C/man3/sigset.3:79
7604 msgid "Reset the disposition of I<sig> to the default."
7605 msgstr ""
7606
7607 #. type: TP
7608 #: build/C/man3/sigset.3:79
7609 #, no-wrap
7610 msgid "B<SIG_IGN>"
7611 msgstr ""
7612
7613 #. type: Plain text
7614 #: build/C/man3/sigset.3:83
7615 msgid "Ignore I<sig>."
7616 msgstr ""
7617
7618 #. type: TP
7619 #: build/C/man3/sigset.3:83
7620 #, no-wrap
7621 msgid "B<SIG_HOLD>"
7622 msgstr ""
7623
7624 #. type: Plain text
7625 #: build/C/man3/sigset.3:90
7626 msgid ""
7627 "Add I<sig> to the process's signal mask, but leave the disposition of I<sig> "
7628 "unchanged."
7629 msgstr ""
7630
7631 #. type: Plain text
7632 #: build/C/man3/sigset.3:96
7633 msgid ""
7634 "If I<disp> specifies the address of a signal handler, then I<sig> is added "
7635 "to the process's signal mask during execution of the handler."
7636 msgstr ""
7637
7638 #. type: Plain text
7639 #: build/C/man3/sigset.3:104
7640 msgid ""
7641 "If I<disp> was specified as a value other than B<SIG_HOLD>, then I<sig> is "
7642 "removed from the process's signal mask."
7643 msgstr ""
7644
7645 #. type: Plain text
7646 #: build/C/man3/sigset.3:110 build/C/man3/sigvec.3:87
7647 msgid "The dispositions for B<SIGKILL> and B<SIGSTOP> cannot be changed."
7648 msgstr ""
7649
7650 #. type: Plain text
7651 #: build/C/man3/sigset.3:116
7652 msgid "The B<sighold>()  function adds I<sig> to the calling process's signal mask."
7653 msgstr ""
7654
7655 #. type: Plain text
7656 #: build/C/man3/sigset.3:122
7657 msgid ""
7658 "The B<sigrelse>()  function removes I<sig> from the calling process's signal "
7659 "mask."
7660 msgstr ""
7661
7662 #. type: Plain text
7663 #: build/C/man3/sigset.3:129
7664 msgid "The B<sigignore>()  function sets the disposition of I<sig> to B<SIG_IGN>."
7665 msgstr ""
7666
7667 #. type: Plain text
7668 #: build/C/man3/sigset.3:145
7669 msgid ""
7670 "On success, B<sigset>()  returns B<SIG_HOLD> if I<sig> was blocked before "
7671 "the call, or the signal's previous disposition if it was not blocked before "
7672 "the call.  On error, B<sigset>()  returns -1, with I<errno> set to indicate "
7673 "the error.  (But see BUGS below.)"
7674 msgstr ""
7675
7676 #. type: Plain text
7677 #: build/C/man3/sigset.3:154
7678 msgid ""
7679 "The B<sighold>(), B<sigrelse>(), and B<sigignore>()  functions return 0 on "
7680 "success; on error, these functions return -1 and set I<errno> to indicate "
7681 "the error."
7682 msgstr ""
7683
7684 #. type: Plain text
7685 #: build/C/man3/sigset.3:161
7686 msgid ""
7687 "For B<sigset>()  see the ERRORS under B<sigaction>(2)  and "
7688 "B<sigprocmask>(2)."
7689 msgstr ""
7690
7691 #. type: Plain text
7692 #: build/C/man3/sigset.3:168
7693 msgid "For B<sighold>()  and B<sigrelse>()  see the ERRORS under B<sigprocmask>(2)."
7694 msgstr ""
7695
7696 #. type: Plain text
7697 #: build/C/man3/sigset.3:173
7698 msgid "For B<sigignore>(), see the errors under B<sigaction>(2)."
7699 msgstr ""
7700
7701 #. type: Plain text
7702 #: build/C/man3/sigset.3:190
7703 msgid ""
7704 "SVr4, POSIX.1-2001.  These functions are obsolete: do not use them in new "
7705 "programs.  POSIX.1-2008 marks B<sighold>(), B<sigignore>(), B<sigpause>(), "
7706 "B<sigrelse>(), and B<sigset>()  as obsolete, recommending the use of "
7707 "B<sigaction>(2), B<sigprocmask>(2), B<pthread_sigmask>(3), and "
7708 "B<sigsuspend>(2)  instead."
7709 msgstr ""
7710
7711 #. type: Plain text
7712 #: build/C/man3/sigset.3:192
7713 msgid "These functions appeared in glibc version 2.1."
7714 msgstr ""
7715
7716 #. type: Plain text
7717 #: build/C/man3/sigset.3:198
7718 msgid ""
7719 "The I<sighandler_t> type is a GNU extension; it is used on this page only to "
7720 "make the B<sigset>()  prototype more easily readable."
7721 msgstr ""
7722
7723 #. type: Plain text
7724 #: build/C/man3/sigset.3:206
7725 msgid ""
7726 "The B<sigset>()  function provides reliable signal handling semantics (as "
7727 "when calling B<sigaction>(2)  with I<sa_mask> equal to 0)."
7728 msgstr ""
7729
7730 #. type: Plain text
7731 #: build/C/man3/sigset.3:224
7732 msgid ""
7733 "On System V, the B<signal>()  function provides unreliable semantics (as "
7734 "when calling B<sigaction>(2)  with I<sa_mask> equal to I<SA_RESETHAND | "
7735 "SA_NODEFER>).  On BSD, B<signal>()  provides reliable semantics.  "
7736 "POSIX.1-2001 leaves these aspects of B<signal>()  unspecified.  See "
7737 "B<signal>(2)  for further details."
7738 msgstr ""
7739
7740 #. type: Plain text
7741 #: build/C/man3/sigset.3:232 build/C/man3/sigvec.3:252
7742 msgid ""
7743 "In order to wait for a signal, BSD and System V both provided a function "
7744 "named B<sigpause>(3), but this function has a different argument on the two "
7745 "systems.  See B<sigpause>(3)  for details."
7746 msgstr ""
7747
7748 #. type: Plain text
7749 #: build/C/man3/sigset.3:241
7750 msgid ""
7751 "In versions of glibc before 2.2, B<sigset>()  did not unblock I<sig> if "
7752 "I<disp> was specified as a value other than B<SIG_HOLD>."
7753 msgstr ""
7754
7755 #.  See http://sourceware.org/bugzilla/show_bug.cgi?id=1951
7756 #. type: Plain text
7757 #: build/C/man3/sigset.3:266
7758 msgid ""
7759 "In versions of glibc before 2.5, B<sigset>()  does not correctly return the "
7760 "previous disposition of the signal in two cases.  First, if I<disp> is "
7761 "specified as B<SIG_HOLD>, then a successful B<sigset>()  always returns "
7762 "B<SIG_HOLD>.  Instead, it should return the previous disposition of the "
7763 "signal (unless the signal was blocked, in which case B<SIG_HOLD> should be "
7764 "returned).  Second, if the signal is currently blocked, then the return "
7765 "value of a successful B<sigset>()  should be B<SIG_HOLD>.  Instead, the "
7766 "previous disposition of the signal is returned.  These problems have been "
7767 "fixed since glibc 2.5."
7768 msgstr ""
7769
7770 #. type: Plain text
7771 #: build/C/man3/sigset.3:276
7772 msgid ""
7773 "B<kill>(2), B<pause>(2), B<sigaction>(2), B<signal>(2), B<sigprocmask>(2), "
7774 "B<raise>(3), B<sigpause>(3), B<sigvec>(3), B<signal>(7)"
7775 msgstr ""
7776
7777 #. type: TH
7778 #: build/C/man3/sigsetops.3:31
7779 #, no-wrap
7780 msgid "SIGSETOPS"
7781 msgstr ""
7782
7783 #. type: Plain text
7784 #: build/C/man3/sigsetops.3:35
7785 msgid ""
7786 "sigemptyset, sigfillset, sigaddset, sigdelset, sigismember - POSIX signal "
7787 "set operations."
7788 msgstr ""
7789
7790 #. type: Plain text
7791 #: build/C/man3/sigsetops.3:39
7792 msgid "B<int sigemptyset(sigset_t *>I<set>B<);>"
7793 msgstr ""
7794
7795 #. type: Plain text
7796 #: build/C/man3/sigsetops.3:41
7797 msgid "B<int sigfillset(sigset_t *>I<set>B<);>"
7798 msgstr ""
7799
7800 #. type: Plain text
7801 #: build/C/man3/sigsetops.3:43
7802 msgid "B<int sigaddset(sigset_t *>I<set>B<, int >I<signum>B<);>"
7803 msgstr ""
7804
7805 #. type: Plain text
7806 #: build/C/man3/sigsetops.3:45
7807 msgid "B<int sigdelset(sigset_t *>I<set>B<, int >I<signum>B<);>"
7808 msgstr ""
7809
7810 #. type: Plain text
7811 #: build/C/man3/sigsetops.3:47
7812 msgid "B<int sigismember(const sigset_t *>I<set>B<, int >I<signum>B<);>"
7813 msgstr ""
7814
7815 #. type: Plain text
7816 #: build/C/man3/sigsetops.3:59
7817 msgid ""
7818 "B<sigemptyset>(), B<sigfillset>(), B<sigaddset>(), B<sigdelset>(), "
7819 "B<sigismember>():"
7820 msgstr ""
7821
7822 #. type: Plain text
7823 #: build/C/man3/sigsetops.3:61
7824 msgid "_POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
7825 msgstr ""
7826
7827 #. type: Plain text
7828 #: build/C/man3/sigsetops.3:65
7829 msgid "These functions allow the manipulation of POSIX signal sets."
7830 msgstr ""
7831
7832 #. type: Plain text
7833 #: build/C/man3/sigsetops.3:70
7834 msgid ""
7835 "B<sigemptyset>()  initializes the signal set given by I<set> to empty, with "
7836 "all signals excluded from the set."
7837 msgstr ""
7838
7839 #. type: Plain text
7840 #: build/C/man3/sigsetops.3:75
7841 msgid "B<sigfillset>()  initializes I<set> to full, including all signals."
7842 msgstr ""
7843
7844 #. type: Plain text
7845 #: build/C/man3/sigsetops.3:83
7846 msgid ""
7847 "B<sigaddset>()  and B<sigdelset>()  add and delete respectively signal "
7848 "I<signum> from I<set>."
7849 msgstr ""
7850
7851 #. type: Plain text
7852 #: build/C/man3/sigsetops.3:89
7853 msgid "B<sigismember>()  tests whether I<signum> is a member of I<set>."
7854 msgstr ""
7855
7856 #. type: Plain text
7857 #: build/C/man3/sigsetops.3:107
7858 msgid ""
7859 "Objects of type I<sigset_t> must be initialized by a call to either "
7860 "B<sigemptyset>()  or B<sigfillset>()  before being passed to the functions "
7861 "B<sigaddset>(), B<sigdelset>()  and B<sigismember>()  or the additional "
7862 "glibc functions described below (B<sigisemptyset>(), B<sigandset>(), and "
7863 "B<sigorset>()).  The results are undefined if this is not done."
7864 msgstr ""
7865
7866 #. type: Plain text
7867 #: build/C/man3/sigsetops.3:114
7868 msgid ""
7869 "B<sigemptyset>(), B<sigfillset>(), B<sigaddset>(), and B<sigdelset>()  "
7870 "return 0 on success and -1 on error."
7871 msgstr ""
7872
7873 #. type: Plain text
7874 #: build/C/man3/sigsetops.3:126
7875 msgid ""
7876 "B<sigismember>()  returns 1 if I<signum> is a member of I<set>, 0 if "
7877 "I<signum> is not a member, and -1 on error.  On error, these functions set "
7878 "I<errno> to indicate the cause."
7879 msgstr ""
7880
7881 #. type: Plain text
7882 #: build/C/man3/sigsetops.3:131
7883 msgid "I<sig> is not a valid signal."
7884 msgstr ""
7885
7886 #. type: SS
7887 #: build/C/man3/sigsetops.3:134
7888 #, no-wrap
7889 msgid "Glibc notes"
7890 msgstr ""
7891
7892 #. type: Plain text
7893 #: build/C/man3/sigsetops.3:140
7894 msgid ""
7895 "If the B<_GNU_SOURCE> feature test macro is defined, then "
7896 "I<E<lt>signal.hE<gt>> exposes three other functions for manipulating signal "
7897 "sets."
7898 msgstr ""
7899
7900 #. type: TP
7901 #: build/C/man3/sigsetops.3:140
7902 #, no-wrap
7903 msgid "B<int sigisemptyset(sigset_t *>I<set>B<);>"
7904 msgstr ""
7905
7906 #. type: Plain text
7907 #: build/C/man3/sigsetops.3:145
7908 msgid "returns 1 if I<set> contains no signals, and 0 otherwise."
7909 msgstr ""
7910
7911 #. type: TP
7912 #: build/C/man3/sigsetops.3:145
7913 #, no-wrap
7914 msgid ""
7915 "B<int sigorset(sigset_t *>I<dest>B<, sigset_t *>I<left>B<, sigset_t "
7916 "*>I<right>B<);>"
7917 msgstr ""
7918
7919 #. type: Plain text
7920 #: build/C/man3/sigsetops.3:154
7921 msgid "places the union of the sets I<left> and I<right> in I<dest>."
7922 msgstr ""
7923
7924 #. type: TP
7925 #: build/C/man3/sigsetops.3:154
7926 #, no-wrap
7927 msgid ""
7928 "B<int sigandset(sigset_t *>I<dest>B<, sigset_t *>I<left>B<, sigset_t "
7929 "*>I<right>B<);>"
7930 msgstr ""
7931
7932 #. type: Plain text
7933 #: build/C/man3/sigsetops.3:163
7934 msgid "places the intersection of the sets I<left> and I<right> in I<dest>."
7935 msgstr ""
7936
7937 #. type: Plain text
7938 #: build/C/man3/sigsetops.3:168
7939 msgid "B<sigorset>()  and B<sigandset>()  return 0 on success, and -1 on failure."
7940 msgstr ""
7941
7942 #. type: Plain text
7943 #: build/C/man3/sigsetops.3:171
7944 msgid ""
7945 "These functions are nonstandard (a few other systems provide similar "
7946 "functions) and their use should be avoided in portable applications."
7947 msgstr ""
7948
7949 #. type: Plain text
7950 #: build/C/man3/sigsetops.3:176
7951 msgid "B<sigaction>(2), B<sigpending>(2), B<sigprocmask>(2), B<sigsuspend>(2)"
7952 msgstr ""
7953
7954 #. type: TH
7955 #: build/C/man2/sigsuspend.2:29
7956 #, no-wrap
7957 msgid "SIGSUSPEND"
7958 msgstr ""
7959
7960 #. type: Plain text
7961 #: build/C/man2/sigsuspend.2:32
7962 msgid "sigsuspend - wait for a signal"
7963 msgstr ""
7964
7965 #. type: Plain text
7966 #: build/C/man2/sigsuspend.2:36
7967 msgid "B<int sigsuspend(const sigset_t *>I<mask>B<);>"
7968 msgstr ""
7969
7970 #. type: Plain text
7971 #: build/C/man2/sigsuspend.2:45
7972 msgid ""
7973 "B<sigsuspend>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
7974 "_POSIX_SOURCE"
7975 msgstr ""
7976
7977 #. type: Plain text
7978 #: build/C/man2/sigsuspend.2:53
7979 msgid ""
7980 "B<sigsuspend>()  temporarily replaces the signal mask of the calling process "
7981 "with the mask given by I<mask> and then suspends the process until delivery "
7982 "of a signal whose action is to invoke a signal handler or to terminate a "
7983 "process."
7984 msgstr ""
7985
7986 #. type: Plain text
7987 #: build/C/man2/sigsuspend.2:62
7988 msgid ""
7989 "If the signal terminates the process, then B<sigsuspend>()  does not "
7990 "return.  If the signal is caught, then B<sigsuspend>()  returns after the "
7991 "signal handler returns, and the signal mask is restored to the state before "
7992 "the call to B<sigsuspend>()."
7993 msgstr ""
7994
7995 #. type: Plain text
7996 #: build/C/man2/sigsuspend.2:70
7997 msgid ""
7998 "It is not possible to block B<SIGKILL> or B<SIGSTOP>; specifying these "
7999 "signals in I<mask>, has no effect on the process's signal mask."
8000 msgstr ""
8001
8002 #. type: Plain text
8003 #: build/C/man2/sigsuspend.2:76
8004 msgid ""
8005 "B<sigsuspend>()  always returns -1, with I<errno> set to inndicate the error "
8006 "(normally, B<EINTR>)."
8007 msgstr ""
8008
8009 #. type: Plain text
8010 #: build/C/man2/sigsuspend.2:81
8011 msgid ""
8012 "I<mask> points to memory which is not a valid part of the process address "
8013 "space."
8014 msgstr ""
8015
8016 #. type: Plain text
8017 #: build/C/man2/sigsuspend.2:84
8018 msgid "The call was interrupted by a signal."
8019 msgstr ""
8020
8021 #. type: Plain text
8022 #: build/C/man2/sigsuspend.2:104
8023 msgid ""
8024 "Normally, B<sigsuspend>()  is used in conjunction with B<sigprocmask>(2)  in "
8025 "order to prevent delivery of a signal during the execution of a critical "
8026 "code section.  The caller first blocks the signals with B<sigprocmask>(2).  "
8027 "When the critical code has completed, the caller then waits for the signals "
8028 "by calling B<sigsuspend>()  with the signal mask that was returned by "
8029 "B<sigprocmask>(2)  (in the I<oldset> argument)."
8030 msgstr ""
8031
8032 #. type: Plain text
8033 #: build/C/man2/sigsuspend.2:118
8034 msgid ""
8035 "B<kill>(2), B<pause>(2), B<sigaction>(2), B<signal>(2), B<sigprocmask>(2), "
8036 "B<sigwaitinfo>(2), B<sigsetops>(3), B<sigwait>(3), B<signal>(7)"
8037 msgstr ""
8038
8039 #. type: TH
8040 #: build/C/man3/sigvec.3:26
8041 #, no-wrap
8042 msgid "SIGVEC"
8043 msgstr ""
8044
8045 #. type: TH
8046 #: build/C/man3/sigvec.3:26
8047 #, no-wrap
8048 msgid "2012-09-06"
8049 msgstr ""
8050
8051 #. type: Plain text
8052 #: build/C/man3/sigvec.3:29
8053 msgid "sigvec, sigblock, sigsetmask, siggetmask, sigmask - BSD signal API"
8054 msgstr ""
8055
8056 #. type: Plain text
8057 #: build/C/man3/sigvec.3:33
8058 msgid ""
8059 "B<int sigvec(int >I<sig>B<, struct sigvec *>I<vec>B<, struct sigvec "
8060 "*>I<ovec>B<);>"
8061 msgstr ""
8062
8063 #. type: Plain text
8064 #: build/C/man3/sigvec.3:35
8065 msgid "B<int sigmask(int >I<signum>B<);>"
8066 msgstr ""
8067
8068 #. type: Plain text
8069 #: build/C/man3/sigvec.3:37
8070 msgid "B<int sigblock(int >I<mask>B<);>"
8071 msgstr ""
8072
8073 #. type: Plain text
8074 #: build/C/man3/sigvec.3:39
8075 msgid "B<int sigsetmask(int >I<mask>B<);>"
8076 msgstr ""
8077
8078 #. type: Plain text
8079 #: build/C/man3/sigvec.3:41
8080 msgid "B<int siggetmask(void);>"
8081 msgstr ""
8082
8083 #. type: Plain text
8084 #: build/C/man3/sigvec.3:49
8085 msgid "All functions shown above: _BSD_SOURCE"
8086 msgstr ""
8087
8088 #. type: Plain text
8089 #: build/C/man3/sigvec.3:56
8090 msgid ""
8091 "These functions are provided in glibc as a compatibility interface for "
8092 "programs that make use of the historical BSD signal API.  This API is "
8093 "obsolete: new applications should use the POSIX signal API (B<sigaction>(2), "
8094 "B<sigprocmask>(2), etc.)."
8095 msgstr ""
8096
8097 #. type: Plain text
8098 #: build/C/man3/sigvec.3:81
8099 msgid ""
8100 "The B<sigvec>()  function sets and/or gets the disposition of the signal "
8101 "I<sig> (like the POSIX B<sigaction>(2)).  If I<vec> is not NULL, it points "
8102 "to a I<sigvec> structure that defines the new disposition for I<sig>.  If "
8103 "I<ovec> is not NULL, it points to a I<sigvec> structure that is used to "
8104 "return the previous disposition of I<sig>.  To obtain the current "
8105 "disposition of I<sig> without changing it, specify NULL for I<vec>, and a "
8106 "non-NULL pointer for I<ovec>."
8107 msgstr ""
8108
8109 #. type: Plain text
8110 #: build/C/man3/sigvec.3:91
8111 msgid "The I<sigvec> structure has the following form:"
8112 msgstr ""
8113
8114 #. type: Plain text
8115 #: build/C/man3/sigvec.3:99
8116 #, no-wrap
8117 msgid ""
8118 "struct sigvec {\n"
8119 "    void (*sv_handler)(int); /* Signal disposition */\n"
8120 "    int    sv_mask;          /* Signals to be blocked in handler */\n"
8121 "    int    sv_flags;         /* Flags */\n"
8122 "};\n"
8123 msgstr ""
8124
8125 #. type: Plain text
8126 #: build/C/man3/sigvec.3:110
8127 msgid ""
8128 "The I<sv_handler> field specifies the disposition of the signal, and is "
8129 "either: the address of a signal handler function; B<SIG_DFL>, meaning the "
8130 "default disposition applies for the signal; or B<SIG_IGN>, meaning that the "
8131 "signal is ignored."
8132 msgstr ""
8133
8134 #. type: Plain text
8135 #: build/C/man3/sigvec.3:124
8136 msgid ""
8137 "If I<sv_handler> specifies the address of a signal handler, then I<sv_mask> "
8138 "specifies a mask of signals that are to be blocked while the handler is "
8139 "executing.  In addition, the signal for which the handler is invoked is also "
8140 "blocked.  Attempts to block B<SIGKILL> or B<SIGSTOP> are silently ignored."
8141 msgstr ""
8142
8143 #. type: Plain text
8144 #: build/C/man3/sigvec.3:131
8145 msgid ""
8146 "If I<sv_handler> specifies the address of a signal handler, then the "
8147 "I<sv_flags> field specifies flags controlling what happens when the handler "
8148 "is called.  This field may contain zero or more of the following flags:"
8149 msgstr ""
8150
8151 #. type: TP
8152 #: build/C/man3/sigvec.3:131
8153 #, no-wrap
8154 msgid "B<SV_INTERRUPT>"
8155 msgstr ""
8156
8157 #. type: Plain text
8158 #: build/C/man3/sigvec.3:139
8159 msgid ""
8160 "If the signal handler interrupts a blocking system call, then upon return "
8161 "from the handler the system call will not be restarted: instead it will fail "
8162 "with the error B<EINTR>.  If this flag is not specified, then system calls "
8163 "are restarted by default."
8164 msgstr ""
8165
8166 #. type: TP
8167 #: build/C/man3/sigvec.3:139
8168 #, no-wrap
8169 msgid "B<SV_RESETHAND>"
8170 msgstr ""
8171
8172 #. type: Plain text
8173 #: build/C/man3/sigvec.3:148
8174 msgid ""
8175 "Reset the disposition of the signal to the default before calling the signal "
8176 "handler.  If this flag is not specified, then the handler remains "
8177 "established until explicitly removed by a later call to B<sigvec>()  or "
8178 "until the process performs an B<execve>(2)."
8179 msgstr ""
8180
8181 #. type: TP
8182 #: build/C/man3/sigvec.3:148
8183 #, no-wrap
8184 msgid "B<SV_ONSTACK>"
8185 msgstr ""
8186
8187 #. type: Plain text
8188 #: build/C/man3/sigvec.3:155
8189 msgid ""
8190 "Handle the signal on the alternate signal stack (historically established "
8191 "under BSD using the obsolete B<sigstack>()  function; the POSIX replacement "
8192 "is B<sigaltstack>(2))."
8193 msgstr ""
8194
8195 #. type: Plain text
8196 #: build/C/man3/sigvec.3:165
8197 msgid ""
8198 "The B<sigmask>()  function constructs and returns a \"signal mask\" for "
8199 "I<signum>.  For example, we can initialize the I<vec.sv_mask> field given to "
8200 "B<sigvec>()  using code such as the following:"
8201 msgstr ""
8202
8203 #. type: Plain text
8204 #: build/C/man3/sigvec.3:170
8205 #, no-wrap
8206 msgid ""
8207 "    vec.sv_mask = sigmask(SIGQUIT) | sigpause(SIGABRT);\n"
8208 "                /* Block SIGQUIT and SIGABRT during\n"
8209 "                   handler execution */\n"
8210 msgstr ""
8211
8212 #. type: Plain text
8213 #: build/C/man3/sigvec.3:185
8214 msgid ""
8215 "The B<sigblock>()  function adds the signals in I<mask> to the process's "
8216 "signal mask (like POSIX I<sigprocmask(SIG_BLOCK)>), and returns the "
8217 "process's previous signal mask.  Attempts to block B<SIGKILL> or B<SIGSTOP> "
8218 "are silently ignored."
8219 msgstr ""
8220
8221 #. type: Plain text
8222 #: build/C/man3/sigvec.3:193
8223 msgid ""
8224 "The B<sigsetmask>()  function sets the process's signal mask to the value "
8225 "given in I<mask> (like POSIX I<sigprocmask(SIG_SETMASK)>), and returns the "
8226 "process's previous signal mask."
8227 msgstr ""
8228
8229 #. type: Plain text
8230 #: build/C/man3/sigvec.3:199
8231 msgid ""
8232 "The B<siggetmask>()  function returns the process's current signal mask.  "
8233 "This call is equivalent to I<sigblock(0)>."
8234 msgstr ""
8235
8236 #. type: Plain text
8237 #: build/C/man3/sigvec.3:205
8238 msgid ""
8239 "The B<sigvec>()  function returns 0 on success; on error, it returns -1 and "
8240 "sets I<errno> to indicate the error."
8241 msgstr ""
8242
8243 #. type: Plain text
8244 #: build/C/man3/sigvec.3:211
8245 msgid ""
8246 "The B<sigblock>()  and B<sigsetmask>()  functions return the previous signal "
8247 "mask."
8248 msgstr ""
8249
8250 #. type: Plain text
8251 #: build/C/man3/sigvec.3:216
8252 msgid "The B<sigmask>()  function returns the signal mask for I<signum>."
8253 msgstr ""
8254
8255 #. type: Plain text
8256 #: build/C/man3/sigvec.3:221
8257 msgid "See the ERRORS under B<sigaction>(2)  and B<sigprocmask>(2)."
8258 msgstr ""
8259
8260 #. type: Plain text
8261 #: build/C/man3/sigvec.3:227
8262 msgid ""
8263 "All of these functions were in 4.3BSD, except B<siggetmask>(), whose origin "
8264 "is unclear.  These functions are obsolete: do not use them in new programs."
8265 msgstr ""
8266
8267 #. type: Plain text
8268 #: build/C/man3/sigvec.3:244
8269 msgid ""
8270 "On 4.3BSD, the B<signal>()  function provided reliable semantics (as when "
8271 "calling B<sigvec>()  with I<vec.sv_mask> equal to 0).  On System V, "
8272 "B<signal>()  provides unreliable semantics.  POSIX.1-2001 leaves these "
8273 "aspects of B<signal>()  unspecified.  See B<signal>(2)  for further details."
8274 msgstr ""
8275
8276 #. type: Plain text
8277 #: build/C/man3/sigvec.3:262
8278 msgid ""
8279 "B<kill>(2), B<pause>(2), B<sigaction>(2), B<signal>(2), B<sigprocmask>(2), "
8280 "B<raise>(3), B<sigpause>(3), B<sigset>(3), B<signal>(7)"
8281 msgstr ""
8282
8283 #. type: TH
8284 #: build/C/man3/sigwait.3:26
8285 #, no-wrap
8286 msgid "SIGWAIT"
8287 msgstr ""
8288
8289 #. type: TH
8290 #: build/C/man3/sigwait.3:26 build/C/man2/sigwaitinfo.2:25
8291 #, no-wrap
8292 msgid "2012-07-21"
8293 msgstr ""
8294
8295 #. type: Plain text
8296 #: build/C/man3/sigwait.3:29
8297 msgid "sigwait - wait for a signal"
8298 msgstr ""
8299
8300 #. type: Plain text
8301 #: build/C/man3/sigwait.3:34
8302 #, no-wrap
8303 msgid "B< int sigwait(const sigset_t *>I<set>B<, int *>I<sig>B<);>\n"
8304 msgstr ""
8305
8306 #. type: Plain text
8307 #: build/C/man3/sigwait.3:44
8308 msgid "B<sigwait>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
8309 msgstr ""
8310
8311 #. type: Plain text
8312 #: build/C/man3/sigwait.3:56
8313 msgid ""
8314 "The B<sigwait>()  function suspends execution of the calling thread until "
8315 "one of the signals specified in the signal set I<set> becomes pending.  The "
8316 "function accepts the signal (removes it from the pending list of signals), "
8317 "and returns the signal number in I<sig>."
8318 msgstr ""
8319
8320 #. type: Plain text
8321 #: build/C/man3/sigwait.3:62
8322 msgid ""
8323 "The operation of B<sigwait>()  is the same as B<sigwaitinfo>(2), except "
8324 "that:"
8325 msgstr ""
8326
8327 #. type: Plain text
8328 #: build/C/man3/sigwait.3:67
8329 msgid ""
8330 "B<sigwait>()  returns only the signal number, rather than a I<siginfo_t> "
8331 "structure describing the signal."
8332 msgstr ""
8333
8334 #. type: Plain text
8335 #: build/C/man3/sigwait.3:69
8336 msgid "The return values of the two functions are different."
8337 msgstr ""
8338
8339 #. type: Plain text
8340 #: build/C/man3/sigwait.3:74
8341 msgid ""
8342 "On success, B<sigwait>()  returns 0.  On error, it returns a positive error "
8343 "number (listed in ERRORS)."
8344 msgstr ""
8345
8346 #.  Does not occur for glibc.
8347 #. type: Plain text
8348 #: build/C/man3/sigwait.3:80
8349 msgid "I<set> contains an invalid signal number."
8350 msgstr ""
8351
8352 #. type: Plain text
8353 #: build/C/man3/sigwait.3:86
8354 msgid "B<sigwait>()  is implemented using B<sigtimedwait>(2)."
8355 msgstr ""
8356
8357 #. type: Plain text
8358 #: build/C/man3/sigwait.3:89
8359 msgid "See B<pthread_sigmask>(3)."
8360 msgstr ""
8361
8362 #. type: Plain text
8363 #: build/C/man3/sigwait.3:97
8364 msgid ""
8365 "B<sigaction>(2), B<signalfd>(2), B<sigpending>(2), B<sigsuspend>(2), "
8366 "B<sigwaitinfo>(2), B<sigsetops>(3), B<signal>(7)"
8367 msgstr ""
8368
8369 #. type: TH
8370 #: build/C/man2/sigwaitinfo.2:25
8371 #, no-wrap
8372 msgid "SIGWAITINFO"
8373 msgstr ""
8374
8375 #. type: Plain text
8376 #: build/C/man2/sigwaitinfo.2:28
8377 msgid "sigwaitinfo, sigtimedwait - synchronously wait for queued signals"
8378 msgstr ""
8379
8380 #. type: Plain text
8381 #: build/C/man2/sigwaitinfo.2:33
8382 #, no-wrap
8383 msgid "B<int sigwaitinfo(const sigset_t *>I<set>B<, siginfo_t *>I<info>B<);>\n"
8384 msgstr ""
8385
8386 #. type: Plain text
8387 #: build/C/man2/sigwaitinfo.2:36
8388 #, no-wrap
8389 msgid ""
8390 "B<int sigtimedwait(const sigset_t *>I<set>B<, siginfo_t *>I<info>B<, >\n"
8391 "B<                 const struct timespec *>I<timeout>B<);>\n"
8392 msgstr ""
8393
8394 #. type: Plain text
8395 #: build/C/man2/sigwaitinfo.2:46
8396 msgid "B<sigwaitinfo>(), B<sigtimedwait>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
8397 msgstr ""
8398
8399 #. type: Plain text
8400 #: build/C/man2/sigwaitinfo.2:56
8401 msgid ""
8402 "B<sigwaitinfo>()  suspends execution of the calling thread until one of the "
8403 "signals in I<set> is pending (If one of the signals in I<set> is already "
8404 "pending for the calling thread, B<sigwaitinfo>()  will return immediately.)"
8405 msgstr ""
8406
8407 #. type: Plain text
8408 #: build/C/man2/sigwaitinfo.2:68
8409 msgid ""
8410 "B<sigwaitinfo>()  removes the signal from the set of pending signals and "
8411 "returns the signal number as its function result.  If the I<info> argument "
8412 "is not NULL, then the buffer that it points to is used to return a structure "
8413 "of type I<siginfo_t> (see B<sigaction>(2))  containing information about the "
8414 "signal."
8415 msgstr ""
8416
8417 #. type: Plain text
8418 #: build/C/man2/sigwaitinfo.2:76
8419 msgid ""
8420 "If multiple signals in I<set> are pending for the caller, the signal that is "
8421 "retrieved by B<sigwaitinfo>()  is determined according to the usual ordering "
8422 "rules; see B<signal>(7)  for further details."
8423 msgstr ""
8424
8425 #. type: Plain text
8426 #: build/C/man2/sigwaitinfo.2:88
8427 msgid ""
8428 "B<sigtimedwait>()  operates in exactly the same way as B<sigwaitinfo>()  "
8429 "except that it has an additional argument, I<timeout>, which specifies a "
8430 "minimum interval for which the thread is suspended waiting for a signal.  "
8431 "(This interval will be rounded up to the system clock granularity, and "
8432 "kernel scheduling delays mean that the interval may overrun by a small "
8433 "amount.)  This argument is of the following type:"
8434 msgstr ""
8435
8436 #. type: Plain text
8437 #: build/C/man2/sigwaitinfo.2:95
8438 #, no-wrap
8439 msgid ""
8440 "struct timespec {\n"
8441 "    long    tv_sec;         /* seconds */\n"
8442 "    long    tv_nsec;        /* nanoseconds */\n"
8443 "}\n"
8444 msgstr ""
8445
8446 #. type: Plain text
8447 #: build/C/man2/sigwaitinfo.2:105
8448 msgid ""
8449 "If both fields of this structure are specified as 0, a poll is performed: "
8450 "B<sigtimedwait>()  returns immediately, either with information about a "
8451 "signal that was pending for the caller, or with an error if none of the "
8452 "signals in I<set> was pending."
8453 msgstr ""
8454
8455 #. type: Plain text
8456 #: build/C/man2/sigwaitinfo.2:114
8457 msgid ""
8458 "On success, both B<sigwaitinfo>()  and B<sigtimedwait>()  return a signal "
8459 "number (i.e., a value greater than zero).  On failure both calls return -1, "
8460 "with I<errno> set to indicate the error."
8461 msgstr ""
8462
8463 #. type: Plain text
8464 #: build/C/man2/sigwaitinfo.2:123
8465 msgid ""
8466 "No signal in I<set> was became pending within the I<timeout> period "
8467 "specified to B<sigtimedwait>()."
8468 msgstr ""
8469
8470 #. type: Plain text
8471 #: build/C/man2/sigwaitinfo.2:129
8472 msgid ""
8473 "The wait was interrupted by a signal handler; see B<signal>(7).  (This "
8474 "handler was for a signal other than one of those in I<set>.)"
8475 msgstr ""
8476
8477 #. type: Plain text
8478 #: build/C/man2/sigwaitinfo.2:133
8479 msgid "I<timeout> was invalid."
8480 msgstr ""
8481
8482 #. type: Plain text
8483 #: build/C/man2/sigwaitinfo.2:153
8484 msgid ""
8485 "In normal usage, the calling program blocks the signals in I<set> via a "
8486 "prior call to B<sigprocmask>(2)  (so that the default disposition for these "
8487 "signals does not occur if they become pending between successive calls to "
8488 "B<sigwaitinfo>()  or B<sigtimedwait>())  and does not establish handlers for "
8489 "these signals.  In a multithreaded program, the signal should be blocked in "
8490 "all threads, in order to prevent the signal being treated according to its "
8491 "default disposition in a thread other than the one calling B<sigwaitinfo>()  "
8492 "or B<sigtimedwait>())."
8493 msgstr ""
8494
8495 #. type: Plain text
8496 #: build/C/man2/sigwaitinfo.2:158
8497 msgid ""
8498 "The set of signals that is pending for a given thread is the union of the "
8499 "set of signals that is pending specifically for that thread and the set of "
8500 "signals that is pending for the process as a whole (see B<signal>(7))."
8501 msgstr ""
8502
8503 #. type: Plain text
8504 #: build/C/man2/sigwaitinfo.2:164
8505 msgid "Attempts to wait for B<SIGKILL> and B<SIGSTOP> are silently ignored."
8506 msgstr ""
8507
8508 #. type: Plain text
8509 #: build/C/man2/sigwaitinfo.2:173
8510 msgid ""
8511 "If multiple threads of a process are blocked waiting for the same signal(s) "
8512 "in B<sigwaitinfo>()  or B<sigtimedwait>(), then exactly one of the threads "
8513 "will actually receive the signal if it becomes pending for the process as a "
8514 "whole; which of the threads receives the signal is indeterminate."
8515 msgstr ""
8516
8517 #. type: Plain text
8518 #: build/C/man2/sigwaitinfo.2:182
8519 msgid ""
8520 "POSIX leaves the meaning of a NULL value for the I<timeout> argument of "
8521 "B<sigtimedwait>()  unspecified, permitting the possibility that this has the "
8522 "same meaning as a call to B<sigwaitinfo>(), and indeed this is what is done "
8523 "on Linux."
8524 msgstr ""
8525
8526 #. type: Plain text
8527 #: build/C/man2/sigwaitinfo.2:187
8528 msgid ""
8529 "On Linux, B<sigwaitinfo>()  is a library function implemented on top of "
8530 "B<sigtimedwait>()."
8531 msgstr ""
8532
8533 #. type: Plain text
8534 #: build/C/man2/sigwaitinfo.2:199
8535 msgid ""
8536 "B<kill>(2), B<sigaction>(2), B<signal>(2), B<signalfd>(2), B<sigpending>(2), "
8537 "B<sigprocmask>(2), B<sigqueue>(3), B<sigsetops>(3), B<sigwait>(3), "
8538 "B<signal>(7), B<time>(7)"
8539 msgstr ""
8540
8541 #. type: TH
8542 #: build/C/man3/sysv_signal.3:25
8543 #, no-wrap
8544 msgid "SYSV_SIGNAL"
8545 msgstr ""
8546
8547 #. type: TH
8548 #: build/C/man3/sysv_signal.3:25
8549 #, no-wrap
8550 msgid "2007-05-04"
8551 msgstr ""
8552
8553 #. type: Plain text
8554 #: build/C/man3/sysv_signal.3:28
8555 msgid "sysv_signal - signal handling with System V semantics"
8556 msgstr ""
8557
8558 #. type: Plain text
8559 #: build/C/man3/sysv_signal.3:30
8560 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
8561 msgstr ""
8562
8563 #. type: Plain text
8564 #: build/C/man3/sysv_signal.3:36
8565 msgid "B<sighandler_t sysv_signal(int >I<signum>B<, sighandler_t >I<handler>B<);>"
8566 msgstr ""
8567
8568 #. type: Plain text
8569 #: build/C/man3/sysv_signal.3:41
8570 msgid ""
8571 "The B<sysv_signal>()  function takes the same arguments, and performs the "
8572 "same task, as B<signal>(2)."
8573 msgstr ""
8574
8575 #. type: Plain text
8576 #: build/C/man3/sysv_signal.3:51
8577 msgid ""
8578 "However B<sysv_signal>()  provides the System V unreliable signal semantics, "
8579 "that is: a) the disposition of the signal is reset to the default when the "
8580 "handler is invoked; b) delivery of further instances of the signal is not "
8581 "blocked while the signal handler is executing; and c) if the handler "
8582 "interrupts (certain) blocking system calls, then the system call is not "
8583 "automatically restarted."
8584 msgstr ""
8585
8586 #. type: Plain text
8587 #: build/C/man3/sysv_signal.3:57
8588 msgid ""
8589 "The B<sysv_signal>()  function returns the previous value of the signal "
8590 "handler, or B<SIG_ERR> on error."
8591 msgstr ""
8592
8593 #. type: Plain text
8594 #: build/C/man3/sysv_signal.3:62
8595 msgid "This function is nonstandard."
8596 msgstr ""
8597
8598 #. type: Plain text
8599 #: build/C/man3/sysv_signal.3:68
8600 msgid "Use of B<sysv_signal>()  should be avoided; use B<sigaction>(2)  instead."
8601 msgstr ""
8602
8603 #. type: Plain text
8604 #: build/C/man3/sysv_signal.3:79
8605 msgid ""
8606 "On older Linux systems, B<sysv_signal>()  and B<signal>(2)  were "
8607 "equivalent.  But on newer systems, B<signal>(2)  provides reliable signal "
8608 "semantics; see B<signal>(2)  for details."
8609 msgstr ""
8610
8611 #. type: Plain text
8612 #: build/C/man3/sysv_signal.3:92
8613 msgid "B<sigaction>(2), B<signal>(2), B<bsd_signal>(3), B<signal>(7)"
8614 msgstr ""
8615
8616 #. type: TH
8617 #: build/C/man2/timer_create.2:31
8618 #, no-wrap
8619 msgid "TIMER_CREATE"
8620 msgstr ""
8621
8622 #. type: TH
8623 #: build/C/man2/timer_create.2:31
8624 #, no-wrap
8625 msgid "2010-09-27"
8626 msgstr ""
8627
8628 #. type: Plain text
8629 #: build/C/man2/timer_create.2:34
8630 msgid "timer_create - create a POSIX per-process timer"
8631 msgstr ""
8632
8633 #. type: Plain text
8634 #: build/C/man2/timer_create.2:38
8635 #, no-wrap
8636 msgid ""
8637 "B<#include E<lt>signal.hE<gt>>\n"
8638 "B<#include E<lt>time.hE<gt>>\n"
8639 msgstr ""
8640
8641 #. type: Plain text
8642 #: build/C/man2/timer_create.2:41
8643 #, no-wrap
8644 msgid ""
8645 "B<int timer_create(clockid_t >I<clockid>B<, struct sigevent *>I<sevp>B<,>\n"
8646 "B<                 timer_t *>I<timerid>B<);>\n"
8647 msgstr ""
8648
8649 #. type: Plain text
8650 #: build/C/man2/timer_create.2:44 build/C/man2/timer_delete.2:37 build/C/man2/timer_getoverrun.2:37 build/C/man2/timer_settime.2:41
8651 msgid "Link with I<-lrt>."
8652 msgstr ""
8653
8654 #. type: Plain text
8655 #: build/C/man2/timer_create.2:52
8656 msgid "B<timer_create>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
8657 msgstr ""
8658
8659 #. type: Plain text
8660 #: build/C/man2/timer_create.2:60
8661 msgid ""
8662 "B<timer_create>()  creates a new per-process interval timer.  The ID of the "
8663 "new timer is returned in the buffer pointed to by I<timerid>, which must be "
8664 "a non-NULL pointer.  This ID is unique within the process, until the timer "
8665 "is deleted.  The new timer is initially disarmed."
8666 msgstr ""
8667
8668 #. type: Plain text
8669 #: build/C/man2/timer_create.2:65
8670 msgid ""
8671 "The I<clockid> argument specifies the clock that the new timer uses to "
8672 "measure time.  It can be specified as one of the following values:"
8673 msgstr ""
8674
8675 #. type: TP
8676 #: build/C/man2/timer_create.2:65
8677 #, no-wrap
8678 msgid "B<CLOCK_REALTIME>"
8679 msgstr ""
8680
8681 #. type: Plain text
8682 #: build/C/man2/timer_create.2:68
8683 msgid "A settable system-wide real-time clock."
8684 msgstr ""
8685
8686 #. type: TP
8687 #: build/C/man2/timer_create.2:68
8688 #, no-wrap
8689 msgid "B<CLOCK_MONOTONIC>"
8690 msgstr ""
8691
8692 #.  Note: the CLOCK_MONOTONIC_RAW clock added for clock_gettime()
8693 #.  in 2.6.28 is not supported for POSIX timers -- mtk, Feb 2009
8694 #. type: Plain text
8695 #: build/C/man2/timer_create.2:75
8696 msgid ""
8697 "A nonsettable monotonically increasing clock that measures time from some "
8698 "unspecified point in the past that does not change after system startup."
8699 msgstr ""
8700
8701 #. type: TP
8702 #: build/C/man2/timer_create.2:75
8703 #, no-wrap
8704 msgid "B<CLOCK_PROCESS_CPUTIME_ID> (since Linux 2.6.12)"
8705 msgstr ""
8706
8707 #. type: Plain text
8708 #: build/C/man2/timer_create.2:79
8709 msgid ""
8710 "A clock that measures (user and system) CPU time consumed by (all of the "
8711 "threads in) the calling process."
8712 msgstr ""
8713
8714 #. type: TP
8715 #: build/C/man2/timer_create.2:79
8716 #, no-wrap
8717 msgid "B<CLOCK_THREAD_CPUTIME_ID> (since Linux 2.6.12)"
8718 msgstr ""
8719
8720 #.  The CLOCK_MONOTONIC_RAW that was added in 2.6.28 can't be used
8721 #.  to create a timer -- mtk, Feb 2009
8722 #. type: Plain text
8723 #: build/C/man2/timer_create.2:85
8724 msgid ""
8725 "A clock that measures (user and system) CPU time consumed by the calling "
8726 "thread."
8727 msgstr ""
8728
8729 #. type: Plain text
8730 #: build/C/man2/timer_create.2:94
8731 msgid ""
8732 "As well as the above values, I<clockid> can be specified as the I<clockid> "
8733 "returned by a call to B<clock_getcpuclockid>(3)  or "
8734 "B<pthread_getcpuclockid>(3)."
8735 msgstr ""
8736
8737 #. type: Plain text
8738 #: build/C/man2/timer_create.2:103
8739 msgid ""
8740 "The I<sevp> argument points to a I<sigevent> structure that specifies how "
8741 "the caller should be notified when the timer expires.  For the definition "
8742 "and general details of this structure, see B<sigevent>(7)."
8743 msgstr ""
8744
8745 #. type: Plain text
8746 #: build/C/man2/timer_create.2:107
8747 msgid "The I<sevp.sigev_notify> field can have the following values:"
8748 msgstr ""
8749
8750 #. type: Plain text
8751 #: build/C/man2/timer_create.2:112
8752 msgid ""
8753 "Don't asynchronously notify when the timer expires.  Progress of the timer "
8754 "can be monitored using B<timer_gettime>(2)."
8755 msgstr ""
8756
8757 #. type: Plain text
8758 #: build/C/man2/timer_create.2:130
8759 msgid ""
8760 "Upon timer expiration, generate the signal I<sigev_signo> for the process.  "
8761 "See B<sigevent>(7)  for general details.  The I<si_code> field of the "
8762 "I<siginfo_t> structure will be set to B<SI_TIMER>.  At any point in time, at "
8763 "most one signal is queued to the process for a given timer; see "
8764 "B<timer_getoverrun>(2)  for more details."
8765 msgstr ""
8766
8767 #. type: Plain text
8768 #: build/C/man2/timer_create.2:138
8769 msgid ""
8770 "Upon timer expiration, invoke I<sigev_notify_function> as if it were the "
8771 "start function of a new thread.  See B<sigevent>(7)  for details."
8772 msgstr ""
8773
8774 #. type: Plain text
8775 #: build/C/man2/timer_create.2:152
8776 msgid ""
8777 "As for B<SIGEV_SIGNAL>, but the signal is targeted at the thread whose ID is "
8778 "given in I<sigev_notify_thread_id>, which must be a thread in the same "
8779 "process as the caller.  The I<sigev_notify_thread_id> field specifies a "
8780 "kernel thread ID, that is, the value returned by B<clone>(2)  or "
8781 "B<gettid>(2).  This flag is intended only for use by threading libraries."
8782 msgstr ""
8783
8784 #. type: Plain text
8785 #: build/C/man2/timer_create.2:167
8786 msgid ""
8787 "Specifying I<sevp> as NULL is equivalent to specifying a pointer to a "
8788 "I<sigevent> structure in which I<sigev_notify> is B<SIGEV_SIGNAL>, "
8789 "I<sigev_signo> is B<SIGALRM>, and I<sigev_value.sival_int> is the timer ID."
8790 msgstr ""
8791
8792 #. type: Plain text
8793 #: build/C/man2/timer_create.2:175
8794 msgid ""
8795 "On success, B<timer_create>()  returns 0, and the ID of the new timer is "
8796 "placed in I<*timerid>.  On failure, -1 is returned, and I<errno> is set to "
8797 "indicate the error."
8798 msgstr ""
8799
8800 #. type: Plain text
8801 #: build/C/man2/timer_create.2:179
8802 msgid "Temporary error during kernel allocation of timer structures."
8803 msgstr ""
8804
8805 #. type: Plain text
8806 #: build/C/man2/timer_create.2:187
8807 msgid ""
8808 "Clock ID, I<sigev_notify>, I<sigev_signo>, or I<sigev_notify_thread_id> is "
8809 "invalid."
8810 msgstr ""
8811
8812 #.  glibc layer: malloc()
8813 #. type: Plain text
8814 #: build/C/man2/timer_create.2:191
8815 msgid "Could not allocate memory."
8816 msgstr ""
8817
8818 #. type: Plain text
8819 #: build/C/man2/timer_create.2:193 build/C/man2/timer_delete.2:67 build/C/man2/timer_getoverrun.2:97
8820 msgid "This system call is available since Linux 2.6."
8821 msgstr ""
8822
8823 #. type: Plain text
8824 #: build/C/man2/timer_create.2:198
8825 msgid "A program may create multiple interval timers using B<timer_create>()."
8826 msgstr ""
8827
8828 #. type: Plain text
8829 #: build/C/man2/timer_create.2:203
8830 msgid ""
8831 "Timers are not inherited by the child of a B<fork>(2), and are disarmed and "
8832 "deleted during an B<execve>(2)."
8833 msgstr ""
8834
8835 #. type: Plain text
8836 #: build/C/man2/timer_create.2:211
8837 msgid ""
8838 "The kernel preallocates a \"queued real-time signal\" for each timer created "
8839 "using B<timer_create>().  Consequently, the number of timers is limited by "
8840 "the B<RLIMIT_SIGPENDING> resource limit (see B<setrlimit>(2))."
8841 msgstr ""
8842
8843 #. type: Plain text
8844 #: build/C/man2/timer_create.2:216
8845 msgid ""
8846 "The timers created by B<timer_create>()  are commonly known as \"POSIX "
8847 "(interval) timers\".  The POSIX timers API consists of the following "
8848 "interfaces:"
8849 msgstr ""
8850
8851 #. type: Plain text
8852 #: build/C/man2/timer_create.2:219
8853 msgid "B<timer_create>(): Create a timer."
8854 msgstr ""
8855
8856 #. type: Plain text
8857 #: build/C/man2/timer_create.2:222
8858 msgid "B<timer_settime>(2): Arm (start) or disarm (stop) a timer."
8859 msgstr ""
8860
8861 #. type: Plain text
8862 #: build/C/man2/timer_create.2:226
8863 msgid ""
8864 "B<timer_gettime>(2): Fetch the time remaining until the next expiration of a "
8865 "timer, along with the interval setting of the timer."
8866 msgstr ""
8867
8868 #. type: Plain text
8869 #: build/C/man2/timer_create.2:229
8870 msgid ""
8871 "B<timer_getoverrun>(2): Return the overrun count for the last timer "
8872 "expiration."
8873 msgstr ""
8874
8875 #. type: Plain text
8876 #: build/C/man2/timer_create.2:232
8877 msgid "B<timer_delete>(2): Disarm and delete a timer."
8878 msgstr ""
8879
8880 #. type: Plain text
8881 #: build/C/man2/timer_create.2:235
8882 msgid ""
8883 "Part of the implementation of the POSIX timers API is provided by glibc.  In "
8884 "particular:"
8885 msgstr ""
8886
8887 #. type: Plain text
8888 #: build/C/man2/timer_create.2:239
8889 msgid ""
8890 "The functionality for B<SIGEV_THREAD> is implemented within glibc, rather "
8891 "than the kernel."
8892 msgstr ""
8893
8894 #.  See the glibc source file kernel-posix-timers.h for the structure
8895 #.  that glibc uses to map user-space timer IDs to kernel timer IDs
8896 #.  The kernel-level timer ID is exposed via siginfo.si_tid.
8897 #. type: Plain text
8898 #: build/C/man2/timer_create.2:245
8899 msgid ""
8900 "The timer IDs presented at user level are maintained by glibc, which maps "
8901 "these IDs to the timer IDs employed by the kernel."
8902 msgstr ""
8903
8904 #. type: Plain text
8905 #: build/C/man2/timer_create.2:253
8906 msgid ""
8907 "The POSIX timers system calls first appeared in Linux 2.6.  Prior to this, "
8908 "glibc provided an incomplete user-space implementation (B<CLOCK_REALTIME> "
8909 "timers only) using POSIX threads, and current glibc falls back to this "
8910 "implementation on systems running pre-2.6 Linux kernels."
8911 msgstr ""
8912
8913 #. type: Plain text
8914 #: build/C/man2/timer_create.2:265
8915 msgid ""
8916 "The program below takes two arguments: a sleep period in seconds, and a "
8917 "timer frequency in nanoseconds.  The program establishes a handler for the "
8918 "signal it uses for the timer, blocks that signal, creates and arms a timer "
8919 "that expires with the given frequency, sleeps for the specified number of "
8920 "seconds, and then unblocks the timer signal.  Assuming that the timer "
8921 "expired at least once while the program slept, the signal handler will be "
8922 "invoked, and the handler displays some information about the timer "
8923 "notification.  The program terminates after one invocation of the signal "
8924 "handler."
8925 msgstr ""
8926
8927 #. type: Plain text
8928 #: build/C/man2/timer_create.2:270
8929 msgid ""
8930 "In the following example run, the program sleeps for 1 second, after "
8931 "creating a timer that has a frequency of 100 nanoseconds.  By the time the "
8932 "signal is unblocked and delivered, there have been around ten million "
8933 "overruns."
8934 msgstr ""
8935
8936 #. type: Plain text
8937 #: build/C/man2/timer_create.2:282
8938 #, no-wrap
8939 msgid ""
8940 "$ B<./a.out 1 100>\n"
8941 "Establishing handler for signal 34\n"
8942 "Blocking signal 34\n"
8943 "timer ID is 0x804c008\n"
8944 "Sleeping for 1 seconds\n"
8945 "Unblocking signal 34\n"
8946 "Caught signal 34\n"
8947 "    sival_ptr = 0xbfb174f4;     *sival_ptr = 0x804c008\n"
8948 "    overrun count = 10004886\n"
8949 msgstr ""
8950
8951 #. type: Plain text
8952 #: build/C/man2/timer_create.2:292
8953 #, no-wrap
8954 msgid ""
8955 "#include E<lt>stdlib.hE<gt>\n"
8956 "#include E<lt>unistd.hE<gt>\n"
8957 "#include E<lt>stdio.hE<gt>\n"
8958 "#include E<lt>signal.hE<gt>\n"
8959 "#include E<lt>time.hE<gt>\n"
8960 msgstr ""
8961
8962 #. type: Plain text
8963 #: build/C/man2/timer_create.2:295
8964 #, no-wrap
8965 msgid ""
8966 "#define CLOCKID CLOCK_REALTIME\n"
8967 "#define SIG SIGRTMIN\n"
8968 msgstr ""
8969
8970 #. type: Plain text
8971 #: build/C/man2/timer_create.2:298
8972 #, no-wrap
8973 msgid ""
8974 "#define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \\e\n"
8975 "                        } while (0)\n"
8976 msgstr ""
8977
8978 #. type: Plain text
8979 #: build/C/man2/timer_create.2:304
8980 #, no-wrap
8981 msgid ""
8982 "static void\n"
8983 "print_siginfo(siginfo_t *si)\n"
8984 "{\n"
8985 "    timer_t *tidp;\n"
8986 "    int or;\n"
8987 msgstr ""
8988
8989 #. type: Plain text
8990 #: build/C/man2/timer_create.2:306
8991 #, no-wrap
8992 msgid "    tidp = si-E<gt>si_value.sival_ptr;\n"
8993 msgstr ""
8994
8995 #. type: Plain text
8996 #: build/C/man2/timer_create.2:309
8997 #, no-wrap
8998 msgid ""
8999 "    printf(\"    sival_ptr = %p; \", si-E<gt>si_value.sival_ptr);\n"
9000 "    printf(\"    *sival_ptr = 0x%lx\\en\", (long) *tidp);\n"
9001 msgstr ""
9002
9003 #. type: Plain text
9004 #: build/C/man2/timer_create.2:316
9005 #, no-wrap
9006 msgid ""
9007 "    or = timer_getoverrun(*tidp);\n"
9008 "    if (or == -1)\n"
9009 "        errExit(\"timer_getoverrun\");\n"
9010 "    else\n"
9011 "        printf(\"    overrun count = %d\\en\", or);\n"
9012 "}\n"
9013 msgstr ""
9014
9015 #. type: Plain text
9016 #: build/C/man2/timer_create.2:323
9017 #, no-wrap
9018 msgid ""
9019 "static void\n"
9020 "handler(int sig, siginfo_t *si, void *uc)\n"
9021 "{\n"
9022 "    /* Note: calling printf() from a signal handler is not\n"
9023 "       strictly correct, since printf() is not async-signal-safe;\n"
9024 "       see signal(7) */\n"
9025 msgstr ""
9026
9027 #. type: Plain text
9028 #: build/C/man2/timer_create.2:328
9029 #, no-wrap
9030 msgid ""
9031 "    printf(\"Caught signal %d\\en\", sig);\n"
9032 "    print_siginfo(si);\n"
9033 "    signal(sig, SIG_IGN);\n"
9034 "}\n"
9035 msgstr ""
9036
9037 #. type: Plain text
9038 #: build/C/man2/timer_create.2:338
9039 #, no-wrap
9040 msgid ""
9041 "int\n"
9042 "main(int argc, char *argv[])\n"
9043 "{\n"
9044 "    timer_t timerid;\n"
9045 "    struct sigevent sev;\n"
9046 "    struct itimerspec its;\n"
9047 "    long long freq_nanosecs;\n"
9048 "    sigset_t mask;\n"
9049 "    struct sigaction sa;\n"
9050 msgstr ""
9051
9052 #. type: Plain text
9053 #: build/C/man2/timer_create.2:344
9054 #, no-wrap
9055 msgid ""
9056 "    if (argc != 3) {\n"
9057 "        fprintf(stderr, \"Usage: %s E<lt>sleep-secsE<gt> "
9058 "E<lt>freq-nanosecsE<gt>\\en\",\n"
9059 "                argv[0]);\n"
9060 "        exit(EXIT_FAILURE);\n"
9061 "    }\n"
9062 msgstr ""
9063
9064 #. type: Plain text
9065 #: build/C/man2/timer_create.2:346
9066 #, no-wrap
9067 msgid "    /* Establish handler for timer signal */\n"
9068 msgstr ""
9069
9070 #. type: Plain text
9071 #: build/C/man2/timer_create.2:353
9072 #, no-wrap
9073 msgid ""
9074 "    printf(\"Establishing handler for signal %d\\en\", SIG);\n"
9075 "    sa.sa_flags = SA_SIGINFO;\n"
9076 "    sa.sa_sigaction = handler;\n"
9077 "    sigemptyset(&sa.sa_mask);\n"
9078 "    if (sigaction(SIG, &sa, NULL) == -1)\n"
9079 "        errExit(\"sigaction\");\n"
9080 msgstr ""
9081
9082 #. type: Plain text
9083 #: build/C/man2/timer_create.2:355
9084 #, no-wrap
9085 msgid "    /* Block timer signal temporarily */\n"
9086 msgstr ""
9087
9088 #. type: Plain text
9089 #: build/C/man2/timer_create.2:361
9090 #, no-wrap
9091 msgid ""
9092 "    printf(\"Blocking signal %d\\en\", SIG);\n"
9093 "    sigemptyset(&mask);\n"
9094 "    sigaddset(&mask, SIG);\n"
9095 "    if (sigprocmask(SIG_SETMASK, &mask, NULL) == -1)\n"
9096 "        errExit(\"sigprocmask\");\n"
9097 msgstr ""
9098
9099 #. type: Plain text
9100 #: build/C/man2/timer_create.2:363
9101 #, no-wrap
9102 msgid "    /* Create the timer */\n"
9103 msgstr ""
9104
9105 #. type: Plain text
9106 #: build/C/man2/timer_create.2:369
9107 #, no-wrap
9108 msgid ""
9109 "    sev.sigev_notify = SIGEV_SIGNAL;\n"
9110 "    sev.sigev_signo = SIG;\n"
9111 "    sev.sigev_value.sival_ptr = &timerid;\n"
9112 "    if (timer_create(CLOCKID, &sev, &timerid) == -1)\n"
9113 "        errExit(\"timer_create\");\n"
9114 msgstr ""
9115
9116 #. type: Plain text
9117 #: build/C/man2/timer_create.2:371
9118 #, no-wrap
9119 msgid "    printf(\"timer ID is 0x%lx\\en\", (long) timerid);\n"
9120 msgstr ""
9121
9122 #. type: Plain text
9123 #: build/C/man2/timer_create.2:373
9124 #, no-wrap
9125 msgid "    /* Start the timer */\n"
9126 msgstr ""
9127
9128 #. type: Plain text
9129 #: build/C/man2/timer_create.2:379
9130 #, no-wrap
9131 msgid ""
9132 "    freq_nanosecs = atoll(argv[2]);\n"
9133 "    its.it_value.tv_sec = freq_nanosecs / 1000000000;\n"
9134 "    its.it_value.tv_nsec = freq_nanosecs % 1000000000;\n"
9135 "    its.it_interval.tv_sec = its.it_value.tv_sec;\n"
9136 "    its.it_interval.tv_nsec = its.it_value.tv_nsec;\n"
9137 msgstr ""
9138
9139 #. type: Plain text
9140 #: build/C/man2/timer_create.2:382
9141 #, no-wrap
9142 msgid ""
9143 "    if (timer_settime(timerid, 0, &its, NULL) == -1)\n"
9144 "         errExit(\"timer_settime\");\n"
9145 msgstr ""
9146
9147 #. type: Plain text
9148 #: build/C/man2/timer_create.2:385
9149 #, no-wrap
9150 msgid ""
9151 "    /* Sleep for a while; meanwhile, the timer may expire\n"
9152 "       multiple times */\n"
9153 msgstr ""
9154
9155 #. type: Plain text
9156 #: build/C/man2/timer_create.2:388
9157 #, no-wrap
9158 msgid ""
9159 "    printf(\"Sleeping for %d seconds\\en\", atoi(argv[1]));\n"
9160 "    sleep(atoi(argv[1]));\n"
9161 msgstr ""
9162
9163 #. type: Plain text
9164 #: build/C/man2/timer_create.2:391
9165 #, no-wrap
9166 msgid ""
9167 "    /* Unlock the timer signal, so that timer notification\n"
9168 "       can be delivered */\n"
9169 msgstr ""
9170
9171 #. type: Plain text
9172 #: build/C/man2/timer_create.2:395
9173 #, no-wrap
9174 msgid ""
9175 "    printf(\"Unblocking signal %d\\en\", SIG);\n"
9176 "    if (sigprocmask(SIG_UNBLOCK, &mask, NULL) == -1)\n"
9177 "        errExit(\"sigprocmask\");\n"
9178 msgstr ""
9179
9180 #. type: Plain text
9181 #: build/C/man2/timer_create.2:398 build/C/man2/timerfd_create.2:540
9182 #, no-wrap
9183 msgid ""
9184 "    exit(EXIT_SUCCESS);\n"
9185 "}\n"
9186 msgstr ""
9187
9188 #. type: Plain text
9189 #: build/C/man2/timer_create.2:414
9190 msgid ""
9191 "B<clock_gettime>(2), B<setitimer>(2), B<timer_delete>(2), "
9192 "B<timer_getoverrun>(2), B<timer_settime>(2), B<timerfd_create>(2), "
9193 "B<clock_getcpuclockid>(3), B<pthread_getcpuclockid>(3), B<pthreads>(7), "
9194 "B<sigevent>(7), B<signal>(7), B<time>(7)"
9195 msgstr ""
9196
9197 #. type: TH
9198 #: build/C/man2/timer_delete.2:26
9199 #, no-wrap
9200 msgid "TIMER_DELETE"
9201 msgstr ""
9202
9203 #. type: TH
9204 #: build/C/man2/timer_delete.2:26 build/C/man2/timer_getoverrun.2:26
9205 #, no-wrap
9206 msgid "2009-02-20"
9207 msgstr ""
9208
9209 #. type: Plain text
9210 #: build/C/man2/timer_delete.2:29
9211 msgid "timer_delete - delete a POSIX per-process timer"
9212 msgstr ""
9213
9214 #. type: Plain text
9215 #: build/C/man2/timer_delete.2:32 build/C/man2/timer_getoverrun.2:32 build/C/man2/timer_settime.2:33
9216 #, no-wrap
9217 msgid "B<#include E<lt>time.hE<gt>>\n"
9218 msgstr ""
9219
9220 #. type: Plain text
9221 #: build/C/man2/timer_delete.2:34
9222 #, no-wrap
9223 msgid "B<int timer_delete(timer_t >I<timerid>B<);>\n"
9224 msgstr ""
9225
9226 #. type: Plain text
9227 #: build/C/man2/timer_delete.2:45
9228 msgid "B<timer_delete>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
9229 msgstr ""
9230
9231 #. type: Plain text
9232 #: build/C/man2/timer_delete.2:53
9233 msgid ""
9234 "B<timer_delete>()  deletes the timer whose ID is given in I<timerid>.  If "
9235 "the timer was armed at the time of this call, it is disarmed before being "
9236 "deleted.  The treatment of any pending signal generated by the deleted timer "
9237 "is unspecified."
9238 msgstr ""
9239
9240 #. type: Plain text
9241 #: build/C/man2/timer_delete.2:60
9242 msgid ""
9243 "On success, B<timer_delete>()  returns 0.  On failure, -1 is returned, and "
9244 "I<errno> is set to indicate the error."
9245 msgstr ""
9246
9247 #. type: Plain text
9248 #: build/C/man2/timer_delete.2:65 build/C/man2/timer_getoverrun.2:95
9249 msgid "I<timerid> is not a valid timer ID."
9250 msgstr ""
9251
9252 #. type: Plain text
9253 #: build/C/man2/timer_delete.2:75
9254 msgid ""
9255 "B<clock_gettime>(2), B<timer_create>(2), B<timer_getoverrun>(2), "
9256 "B<timer_settime>(2), B<time>(7)"
9257 msgstr ""
9258
9259 #. type: TH
9260 #: build/C/man2/timer_getoverrun.2:26
9261 #, no-wrap
9262 msgid "TIMER_GETOVERRUN"
9263 msgstr ""
9264
9265 #. type: Plain text
9266 #: build/C/man2/timer_getoverrun.2:29
9267 msgid "timer_getoverrun - get overrun count for a POSIX per-process timer"
9268 msgstr ""
9269
9270 #. type: Plain text
9271 #: build/C/man2/timer_getoverrun.2:34
9272 #, no-wrap
9273 msgid "B<int timer_getoverrun(timer_t >I<timerid>B<);>\n"
9274 msgstr ""
9275
9276 #. type: Plain text
9277 #: build/C/man2/timer_getoverrun.2:45
9278 msgid "B<timer_getoverrun>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
9279 msgstr ""
9280
9281 #. type: Plain text
9282 #: build/C/man2/timer_getoverrun.2:56
9283 msgid ""
9284 "B<timer_getoverrun>()  returns the \"overrun count\" for the timer referred "
9285 "to by I<timerid>.  An application can use the overrun count to accurately "
9286 "calculate the number of timer expirations that would have occurred over a "
9287 "given time interval.  Timer overruns can occur both when receiving "
9288 "expiration notifications via signals (B<SIGEV_SIGNAL>), and via threads "
9289 "(B<SIGEV_THREAD>)."
9290 msgstr ""
9291
9292 #. type: Plain text
9293 #: build/C/man2/timer_getoverrun.2:76
9294 msgid ""
9295 "When expiration notifications are delivered via a signal, overruns can occur "
9296 "as follows.  Regardless of whether or not a real-time signal is used for "
9297 "timer notifications, the system queues at most one signal per timer.  (This "
9298 "is the behavior specified by POSIX.1-2001.  The alternative, queuing one "
9299 "signal for each timer expiration, could easily result in overflowing the "
9300 "allowed limits for queued signals on the system.)  Because of system "
9301 "scheduling delays, or because the signal may be temporarily blocked, there "
9302 "can be a delay between the time when the notification signal is generated "
9303 "and the time when it is delivered (e.g., caught by a signal handler) or "
9304 "accepted (e.g., using B<sigwaitinfo>(2)).  In this interval, further timer "
9305 "expirations may occur.  The timer overrun count is the number of additional "
9306 "timer expirations that occurred between the time when the signal was "
9307 "generated and when it was delivered or accepted."
9308 msgstr ""
9309
9310 #. type: Plain text
9311 #: build/C/man2/timer_getoverrun.2:82
9312 msgid ""
9313 "Timer overruns can also occur when expiration notifications are delivered "
9314 "via invocation of a thread, since there may be an arbitrary delay between an "
9315 "expiration of the timer and the invocation of the notification thread, and "
9316 "in that delay interval, additional timer expirations may occur"
9317 msgstr ""
9318
9319 #. type: Plain text
9320 #: build/C/man2/timer_getoverrun.2:90
9321 msgid ""
9322 "On success, B<timer_getoverrun>()  returns the overrun count of the "
9323 "specified timer; this count may be 0 if no overruns have occurred.  On "
9324 "failure, -1 is returned, and I<errno> is set to indicate the error."
9325 msgstr ""
9326
9327 #. type: Plain text
9328 #: build/C/man2/timer_getoverrun.2:111
9329 msgid ""
9330 "When timer notifications are delivered via signals (B<SIGEV_SIGNAL>), on "
9331 "Linux it is also possible to obtain the overrun count via the I<si_overrun> "
9332 "field of the I<siginfo_t> structure (see B<sigaction>(2)).  This allows an "
9333 "application to avoid the overhead of making a system call to obtain the "
9334 "overrun count, but is a nonportable extension to POSIX.1-2001."
9335 msgstr ""
9336
9337 #.  FIXME . Austin bug filed, 11 Feb 09
9338 #. type: Plain text
9339 #: build/C/man2/timer_getoverrun.2:115
9340 msgid ""
9341 "POSIX.1-2001 discusses timer overruns only in the context of timer "
9342 "notifications using signals."
9343 msgstr ""
9344
9345 #.  Bug filed: http://bugzilla.kernel.org/show_bug.cgi?id=12665
9346 #.  http://thread.gmane.org/gmane.linux.kernel/113276/
9347 #. type: Plain text
9348 #: build/C/man2/timer_getoverrun.2:128
9349 msgid ""
9350 "POSIX.1-2001 specifies that if the timer overrun count is equal to or "
9351 "greater than an implementation-defined maximum, B<DELAYTIMER_MAX>, then "
9352 "B<timer_getoverrun>()  should return B<DELAYTIMER_MAX>.  However, Linux does "
9353 "not implement this feature: instead, if the timer overrun value exceeds the "
9354 "maximum representable integer, the counter cycles, starting once more from "
9355 "low values."
9356 msgstr ""
9357
9358 #. type: Plain text
9359 #: build/C/man2/timer_getoverrun.2:131 build/C/man2/timer_settime.2:212
9360 msgid "See B<timer_create>(2)."
9361 msgstr ""
9362
9363 #. type: Plain text
9364 #: build/C/man2/timer_getoverrun.2:141
9365 msgid ""
9366 "B<clock_gettime>(2), B<sigaction>(2), B<signalfd>(2), B<sigwaitinfo>(2), "
9367 "B<timer_create>(2), B<timer_delete>(2), B<timer_settime>(2), B<signal>(7), "
9368 "B<time>(7)"
9369 msgstr ""
9370
9371 #. type: TH
9372 #: build/C/man2/timer_settime.2:26
9373 #, no-wrap
9374 msgid "TIMER_SETTIME"
9375 msgstr ""
9376
9377 #. type: TH
9378 #: build/C/man2/timer_settime.2:26
9379 #, no-wrap
9380 msgid "2012-10-15"
9381 msgstr ""
9382
9383 #. type: Plain text
9384 #: build/C/man2/timer_settime.2:30
9385 msgid ""
9386 "timer_settime, timer_gettime - arm/disarm and fetch state of POSIX "
9387 "per-process timer"
9388 msgstr ""
9389
9390 #. type: Plain text
9391 #: build/C/man2/timer_settime.2:38
9392 #, no-wrap
9393 msgid ""
9394 "B<int timer_settime(timer_t >I<timerid>B<, int >I<flags>B<,>\n"
9395 "B<                  const struct itimerspec *>I<new_value>B<,>\n"
9396 "B<                  struct itimerspec * >I<old_value>B<);>\n"
9397 "B<int timer_gettime(timer_t >I<timerid>B<, struct itimerspec "
9398 "*>I<curr_value>B<);>\n"
9399 msgstr ""
9400
9401 #. type: Plain text
9402 #: build/C/man2/timer_settime.2:50
9403 msgid "B<timer_settime>(), B<timer_gettime>(): _POSIX_C_SOURCE\\ E<gt>=\\ 199309L"
9404 msgstr ""
9405
9406 #. type: Plain text
9407 #: build/C/man2/timer_settime.2:63
9408 msgid ""
9409 "B<timer_settime>()  arms or disarms the timer identified by I<timerid>.  The "
9410 "I<new_value> argument is pointer to an I<itimerspec> structure that "
9411 "specifies the new initial value and the new interval for the timer.  The "
9412 "I<itimerspec> structure is defined as follows:"
9413 msgstr ""
9414
9415 #. type: Plain text
9416 #: build/C/man2/timer_settime.2:70 build/C/man2/timerfd_create.2:128
9417 #, no-wrap
9418 msgid ""
9419 "struct timespec {\n"
9420 "    time_t tv_sec;                /* Seconds */\n"
9421 "    long   tv_nsec;               /* Nanoseconds */\n"
9422 "};\n"
9423 msgstr ""
9424
9425 #. type: Plain text
9426 #: build/C/man2/timer_settime.2:75
9427 #, no-wrap
9428 msgid ""
9429 "struct itimerspec {\n"
9430 "    struct timespec it_interval;  /* Timer interval */\n"
9431 "    struct timespec it_value;     /* Initial expiration */\n"
9432 "};\n"
9433 msgstr ""
9434
9435 #. type: Plain text
9436 #: build/C/man2/timer_settime.2:87
9437 msgid ""
9438 "Each of the substructures of the I<itimerspec> structure is a I<timespec> "
9439 "structure that allows a time value to be specified in seconds and "
9440 "nanoseconds.  These time values are measured according to the clock that was "
9441 "specified when the timer was created by B<timer_create>(2)"
9442 msgstr ""
9443
9444 #. type: Plain text
9445 #: build/C/man2/timer_settime.2:101
9446 msgid ""
9447 "If I<new_value-E<gt>it_value> specifies a nonzero value (i.e., either "
9448 "subfield is nonzero), then B<timer_settime>()  arms (starts) the timer, "
9449 "setting it to initially expire at the given time.  (If the timer was already "
9450 "armed, then the previous settings are overwritten.)  If "
9451 "I<new_value-E<gt>it_value> specifies a zero value (i.e., both subfields are "
9452 "zero), then the timer is disarmed."
9453 msgstr ""
9454
9455 #. type: Plain text
9456 #: build/C/man2/timer_settime.2:113
9457 msgid ""
9458 "The I<new_value-E<gt>it_interval> field specifies the period of the timer, "
9459 "in seconds and nanoseconds.  If this field is nonzero, then each time that "
9460 "an armed timer expires, the timer is reloaded from the value specified in "
9461 "I<new_value-E<gt>it_interval>.  If I<new_value-E<gt>it_interval> specifies a "
9462 "zero value then the timer expires just once, at the time specified by "
9463 "I<it_value>."
9464 msgstr ""
9465
9466 #.  By experiment: the overrun count is set correctly, for CLOCK_REALTIME.
9467 #. type: Plain text
9468 #: build/C/man2/timer_settime.2:134
9469 msgid ""
9470 "By default, the initial expiration time specified in "
9471 "I<new_value-E<gt>it_value> is interpreted relative to the current time on "
9472 "the timer's clock at the time of the call.  This can be modified by "
9473 "specifying B<TIMER_ABSTIME> in I<flags>, in which case "
9474 "I<new_value-E<gt>it_value> is interpreted as an absolute value as measured "
9475 "on the timer's clock; that is, the timer will expire when the clock value "
9476 "reaches the value specified by I<new_value-E<gt>it_value>.  If the specified "
9477 "absolute time has already passed, then the timer expires immediately, and "
9478 "the overrun count (see B<timer_getoverrun>(2))  will be set correctly."
9479 msgstr ""
9480
9481 #.  Similar remarks might apply with respect to process and thread CPU time
9482 #.  clocks, but these clocks are not currently (2.6.28) settable on Linux.
9483 #. type: Plain text
9484 #: build/C/man2/timer_settime.2:144
9485 msgid ""
9486 "If the value of the B<CLOCK_REALTIME> clock is adjusted while an absolute "
9487 "timer based on that clock is armed, then the expiration of the timer will be "
9488 "appropriately adjusted.  Adjustments to the B<CLOCK_REALTIME> clock have no "
9489 "effect on relative timers based on that clock."
9490 msgstr ""
9491
9492 #. type: Plain text
9493 #: build/C/man2/timer_settime.2:153
9494 msgid ""
9495 "If I<old_value> is not NULL, then it points to a buffer that is used to "
9496 "return the previous interval of the timer (in I<old_value-E<gt>it_interval>)  "
9497 "and the amount of time until the timer would previously have next expired "
9498 "(in I<old_value-E<gt>it_value>)."
9499 msgstr ""
9500
9501 #. type: Plain text
9502 #: build/C/man2/timer_settime.2:173
9503 msgid ""
9504 "B<timer_gettime>()  returns the time until next expiration, and the "
9505 "interval, for the timer specified by I<timerid>, in the buffer pointed to by "
9506 "I<curr_value>.  The time remaining until the next timer expiration is "
9507 "returned in I<curr_value-E<gt>it_value>; this is always a relative value, "
9508 "regardless of whether the B<TIMER_ABSTIME> flag was used when arming the "
9509 "timer.  If the value returned in I<curr_value-E<gt>it_value> is zero, then "
9510 "the timer is currently disarmed.  The timer interval is returned in "
9511 "I<curr_value-E<gt>it_interval>.  If the value returned in "
9512 "I<curr_value-E<gt>it_interval> is zero, then this is a \"one-shot\" timer."
9513 msgstr ""
9514
9515 #. type: Plain text
9516 #: build/C/man2/timer_settime.2:182
9517 msgid ""
9518 "On success, B<timer_settime>()  and B<timer_gettime>()  return 0.  On error, "
9519 "-1 is returned, and I<errno> is set to indicate the error."
9520 msgstr ""
9521
9522 #. type: Plain text
9523 #: build/C/man2/timer_settime.2:184
9524 msgid "These functions may fail with the following errors:"
9525 msgstr ""
9526
9527 #. type: Plain text
9528 #: build/C/man2/timer_settime.2:191
9529 msgid "I<new_value>, I<old_value>, or I<curr_value> is not a valid pointer."
9530 msgstr ""
9531
9532 #.  FIXME . eventually: invalid value in flags
9533 #. type: Plain text
9534 #: build/C/man2/timer_settime.2:196
9535 msgid "I<timerid> is invalid."
9536 msgstr ""
9537
9538 #. type: Plain text
9539 #: build/C/man2/timer_settime.2:199
9540 msgid "B<timer_settime>()  may fail with the following errors:"
9541 msgstr ""
9542
9543 #. type: Plain text
9544 #: build/C/man2/timer_settime.2:205
9545 msgid ""
9546 "I<new_value.it_value> is negative; or I<new_value.it_value.tv_nsec> is "
9547 "negative or greater than 999,999,999."
9548 msgstr ""
9549
9550 #. type: Plain text
9551 #: build/C/man2/timer_settime.2:207
9552 msgid "These system calls are available since Linux 2.6."
9553 msgstr ""
9554
9555 #. type: Plain text
9556 #: build/C/man2/timer_settime.2:216
9557 msgid "B<timer_create>(2), B<timer_getoverrun>(2), B<time>(7)"
9558 msgstr ""
9559
9560 #. type: TH
9561 #: build/C/man2/timerfd_create.2:21
9562 #, no-wrap
9563 msgid "TIMERFD_CREATE"
9564 msgstr ""
9565
9566 #. type: TH
9567 #: build/C/man2/timerfd_create.2:21
9568 #, no-wrap
9569 msgid "2011-09-14"
9570 msgstr ""
9571
9572 #. type: Plain text
9573 #: build/C/man2/timerfd_create.2:25
9574 msgid ""
9575 "timerfd_create, timerfd_settime, timerfd_gettime - timers that notify via "
9576 "file descriptors"
9577 msgstr ""
9578
9579 #. type: Plain text
9580 #: build/C/man2/timerfd_create.2:28
9581 #, no-wrap
9582 msgid "B<#include E<lt>sys/timerfd.hE<gt>>\n"
9583 msgstr ""
9584
9585 #. type: Plain text
9586 #: build/C/man2/timerfd_create.2:30
9587 #, no-wrap
9588 msgid "B<int timerfd_create(int >I<clockid>B<, int >I<flags>B<);>\n"
9589 msgstr ""
9590
9591 #. type: Plain text
9592 #: build/C/man2/timerfd_create.2:34
9593 #, no-wrap
9594 msgid ""
9595 "B<int timerfd_settime(int >I<fd>B<, int >I<flags>B<,>\n"
9596 "B<                    const struct itimerspec *>I<new_value>B<,>\n"
9597 "B<                    struct itimerspec *>I<old_value>B<);>\n"
9598 msgstr ""
9599
9600 #. type: Plain text
9601 #: build/C/man2/timerfd_create.2:36
9602 #, no-wrap
9603 msgid "B<int timerfd_gettime(int >I<fd>B<, struct itimerspec *>I<curr_value>B<);>\n"
9604 msgstr ""
9605
9606 #. type: Plain text
9607 #: build/C/man2/timerfd_create.2:49
9608 msgid ""
9609 "These system calls create and operate on a timer that delivers timer "
9610 "expiration notifications via a file descriptor.  They provide an alternative "
9611 "to the use of B<setitimer>(2)  or B<timer_create>(2), with the advantage "
9612 "that the file descriptor may be monitored by B<select>(2), B<poll>(2), and "
9613 "B<epoll>(7)."
9614 msgstr ""
9615
9616 #. type: Plain text
9617 #: build/C/man2/timerfd_create.2:61
9618 msgid ""
9619 "The use of these three system calls is analogous to the use of "
9620 "B<timer_create>(2), B<timer_settime>(2), and B<timer_gettime>(2).  (There is "
9621 "no analog of B<timer_getoverrun>(2), since that functionality is provided by "
9622 "B<read>(2), as described below.)"
9623 msgstr ""
9624
9625 #. type: SS
9626 #: build/C/man2/timerfd_create.2:61
9627 #, no-wrap
9628 msgid "timerfd_create()"
9629 msgstr ""
9630
9631 #. type: Plain text
9632 #: build/C/man2/timerfd_create.2:80
9633 msgid ""
9634 "B<timerfd_create>()  creates a new timer object, and returns a file "
9635 "descriptor that refers to that timer.  The I<clockid> argument specifies the "
9636 "clock that is used to mark the progress of the timer, and must be either "
9637 "B<CLOCK_REALTIME> or B<CLOCK_MONOTONIC>.  B<CLOCK_REALTIME> is a settable "
9638 "system-wide clock.  B<CLOCK_MONOTONIC> is a nonsettable clock that is not "
9639 "affected by discontinuous changes in the system clock (e.g., manual changes "
9640 "to system time).  The current value of each of these clocks can be retrieved "
9641 "using B<clock_gettime>(2)."
9642 msgstr ""
9643
9644 #. type: Plain text
9645 #: build/C/man2/timerfd_create.2:85
9646 msgid ""
9647 "Starting with Linux 2.6.27, the following values may be bitwise ORed in "
9648 "I<flags> to change the behavior of B<timerfd_create>():"
9649 msgstr ""
9650
9651 #. type: TP
9652 #: build/C/man2/timerfd_create.2:85
9653 #, no-wrap
9654 msgid "B<TFD_NONBLOCK>"
9655 msgstr ""
9656
9657 #. type: TP
9658 #: build/C/man2/timerfd_create.2:93
9659 #, no-wrap
9660 msgid "B<TFD_CLOEXEC>"
9661 msgstr ""
9662
9663 #. type: Plain text
9664 #: build/C/man2/timerfd_create.2:107
9665 msgid ""
9666 "In Linux versions up to and including 2.6.26, I<flags> must be specified as "
9667 "zero."
9668 msgstr ""
9669
9670 #. type: SS
9671 #: build/C/man2/timerfd_create.2:107
9672 #, no-wrap
9673 msgid "timerfd_settime()"
9674 msgstr ""
9675
9676 #. type: Plain text
9677 #: build/C/man2/timerfd_create.2:112
9678 msgid ""
9679 "B<timerfd_settime>()  arms (starts) or disarms (stops)  the timer referred "
9680 "to by the file descriptor I<fd>."
9681 msgstr ""
9682
9683 #. type: Plain text
9684 #: build/C/man2/timerfd_create.2:121
9685 msgid ""
9686 "The I<new_value> argument specifies the initial expiration and interval for "
9687 "the timer.  The I<itimer> structure used for this argument contains two "
9688 "fields, each of which is in turn a structure of type I<timespec>:"
9689 msgstr ""
9690
9691 #. type: Plain text
9692 #: build/C/man2/timerfd_create.2:133
9693 #, no-wrap
9694 msgid ""
9695 "struct itimerspec {\n"
9696 "    struct timespec it_interval;  /* Interval for periodic timer */\n"
9697 "    struct timespec it_value;     /* Initial expiration */\n"
9698 "};\n"
9699 msgstr ""
9700
9701 #. type: Plain text
9702 #: build/C/man2/timerfd_create.2:145
9703 msgid ""
9704 "I<new_value.it_value> specifies the initial expiration of the timer, in "
9705 "seconds and nanoseconds.  Setting either field of I<new_value.it_value> to a "
9706 "nonzero value arms the timer.  Setting both fields of I<new_value.it_value> "
9707 "to zero disarms the timer."
9708 msgstr ""
9709
9710 #. type: Plain text
9711 #: build/C/man2/timerfd_create.2:154
9712 msgid ""
9713 "Setting one or both fields of I<new_value.it_interval> to nonzero values "
9714 "specifies the period, in seconds and nanoseconds, for repeated timer "
9715 "expirations after the initial expiration.  If both fields of "
9716 "I<new_value.it_interval> are zero, the timer expires just once, at the time "
9717 "specified by I<new_value.it_value>."
9718 msgstr ""
9719
9720 #. type: Plain text
9721 #: build/C/man2/timerfd_create.2:170
9722 msgid ""
9723 "The I<flags> argument is either 0, to start a relative timer "
9724 "(I<new_value.it_value> specifies a time relative to the current value of the "
9725 "clock specified by I<clockid>), or B<TFD_TIMER_ABSTIME>, to start an "
9726 "absolute timer (I<new_value.it_value> specifies an absolute time for the "
9727 "clock specified by I<clockid>; that is, the timer will expire when the value "
9728 "of that clock reaches the value specified in I<new_value.it_value>)."
9729 msgstr ""
9730
9731 #. type: Plain text
9732 #: build/C/man2/timerfd_create.2:181
9733 msgid ""
9734 "If the I<old_value> argument is not NULL, then the I<itimerspec> structure "
9735 "that it points to is used to return the setting of the timer that was "
9736 "current at the time of the call; see the description of B<timerfd_gettime>()  "
9737 "following."
9738 msgstr ""
9739
9740 #. type: SS
9741 #: build/C/man2/timerfd_create.2:181
9742 #, no-wrap
9743 msgid "timerfd_gettime()"
9744 msgstr ""
9745
9746 #. type: Plain text
9747 #: build/C/man2/timerfd_create.2:190
9748 msgid ""
9749 "B<timerfd_gettime>()  returns, in I<curr_value>, an I<itimerspec> structure "
9750 "that contains the current setting of the timer referred to by the file "
9751 "descriptor I<fd>."
9752 msgstr ""
9753
9754 #. type: Plain text
9755 #: build/C/man2/timerfd_create.2:200
9756 msgid ""
9757 "The I<it_value> field returns the amount of time until the timer will next "
9758 "expire.  If both fields of this structure are zero, then the timer is "
9759 "currently disarmed.  This field always contains a relative value, regardless "
9760 "of whether the B<TFD_TIMER_ABSTIME> flag was specified when setting the "
9761 "timer."
9762 msgstr ""
9763
9764 #. type: Plain text
9765 #: build/C/man2/timerfd_create.2:207
9766 msgid ""
9767 "The I<it_interval> field returns the interval of the timer.  If both fields "
9768 "of this structure are zero, then the timer is set to expire just once, at "
9769 "the time specified by I<curr_value.it_value>."
9770 msgstr ""
9771
9772 #. type: SS
9773 #: build/C/man2/timerfd_create.2:207
9774 #, no-wrap
9775 msgid "Operating on a timer file descriptor"
9776 msgstr ""
9777
9778 #. type: Plain text
9779 #: build/C/man2/timerfd_create.2:211
9780 msgid ""
9781 "The file descriptor returned by B<timerfd_create>()  supports the following "
9782 "operations:"
9783 msgstr ""
9784
9785 #. type: Plain text
9786 #: build/C/man2/timerfd_create.2:225
9787 msgid ""
9788 "If the timer has already expired one or more times since its settings were "
9789 "last modified using B<timerfd_settime>(), or since the last successful "
9790 "B<read>(2), then the buffer given to B<read>(2)  returns an unsigned 8-byte "
9791 "integer (I<uint64_t>)  containing the number of expirations that have "
9792 "occurred.  (The returned value is in host byte order, i.e., the native byte "
9793 "order for integers on the host machine.)"
9794 msgstr ""
9795
9796 #. type: Plain text
9797 #: build/C/man2/timerfd_create.2:238
9798 msgid ""
9799 "If no timer expirations have occurred at the time of the B<read>(2), then "
9800 "the call either blocks until the next timer expiration, or fails with the "
9801 "error B<EAGAIN> if the file descriptor has been made nonblocking (via the "
9802 "use of the B<fcntl>(2)  B<F_SETFL> operation to set the B<O_NONBLOCK> flag)."
9803 msgstr ""
9804
9805 #. type: Plain text
9806 #: build/C/man2/timerfd_create.2:244
9807 msgid ""
9808 "A B<read>(2)  will fail with the error B<EINVAL> if the size of the supplied "
9809 "buffer is less than 8 bytes."
9810 msgstr ""
9811
9812 #. type: Plain text
9813 #: build/C/man2/timerfd_create.2:255
9814 msgid ""
9815 "The file descriptor is readable (the B<select>(2)  I<readfds> argument; the "
9816 "B<poll>(2)  B<POLLIN> flag)  if one or more timer expirations have occurred."
9817 msgstr ""
9818
9819 #. type: Plain text
9820 #: build/C/man2/timerfd_create.2:262
9821 msgid ""
9822 "The file descriptor also supports the other file-descriptor multiplexing "
9823 "APIs: B<pselect>(2), B<ppoll>(2), and B<epoll>(7)."
9824 msgstr ""
9825
9826 #. type: Plain text
9827 #: build/C/man2/timerfd_create.2:269
9828 msgid ""
9829 "When the file descriptor is no longer required it should be closed.  When "
9830 "all file descriptors associated with the same timer object have been closed, "
9831 "the timer is disarmed and its resources are freed by the kernel."
9832 msgstr ""
9833
9834 #. type: Plain text
9835 #: build/C/man2/timerfd_create.2:281
9836 msgid ""
9837 "After a B<fork>(2), the child inherits a copy of the file descriptor created "
9838 "by B<timerfd_create>().  The file descriptor refers to the same underlying "
9839 "timer object as the corresponding file descriptor in the parent, and "
9840 "B<read>(2)s in the child will return information about expirations of the "
9841 "timer."
9842 msgstr ""
9843
9844 #. type: Plain text
9845 #: build/C/man2/timerfd_create.2:287
9846 msgid ""
9847 "A file descriptor created by B<timerfd_create>()  is preserved across "
9848 "B<execve>(2), and continues to generate timer expirations if the timer was "
9849 "armed."
9850 msgstr ""
9851
9852 #. type: Plain text
9853 #: build/C/man2/timerfd_create.2:294
9854 msgid ""
9855 "On success, B<timerfd_create>()  returns a new file descriptor.  On error, "
9856 "-1 is returned and I<errno> is set to indicate the error."
9857 msgstr ""
9858
9859 #. type: Plain text
9860 #: build/C/man2/timerfd_create.2:302
9861 msgid ""
9862 "B<timerfd_settime>()  and B<timerfd_gettime>()  return 0 on success; on "
9863 "error they return -1, and set I<errno> to indicate the error."
9864 msgstr ""
9865
9866 #. type: Plain text
9867 #: build/C/man2/timerfd_create.2:305
9868 msgid "B<timerfd_create>()  can fail with the following errors:"
9869 msgstr ""
9870
9871 #. type: Plain text
9872 #: build/C/man2/timerfd_create.2:313
9873 msgid "The I<clockid> argument is neither B<CLOCK_MONOTONIC> nor B<CLOCK_REALTIME>;"
9874 msgstr ""
9875
9876 #. type: Plain text
9877 #: build/C/man2/timerfd_create.2:333
9878 msgid "There was insufficient kernel memory to create the timer."
9879 msgstr ""
9880
9881 #. type: Plain text
9882 #: build/C/man2/timerfd_create.2:338
9883 msgid ""
9884 "B<timerfd_settime>()  and B<timerfd_gettime>()  can fail with the following "
9885 "errors:"
9886 msgstr ""
9887
9888 #. type: Plain text
9889 #: build/C/man2/timerfd_create.2:342
9890 msgid "I<fd> is not a valid file descriptor."
9891 msgstr ""
9892
9893 #. type: Plain text
9894 #: build/C/man2/timerfd_create.2:353
9895 msgid "I<fd> is not a valid timerfd file descriptor."
9896 msgstr ""
9897
9898 #. type: Plain text
9899 #: build/C/man2/timerfd_create.2:356
9900 msgid "B<timerfd_settime>()  can also fail with the following errors:"
9901 msgstr ""
9902
9903 #. type: Plain text
9904 #: build/C/man2/timerfd_create.2:362
9905 msgid ""
9906 "I<new_value> is not properly initialized (one of the I<tv_nsec> falls "
9907 "outside the range zero to 999,999,999)."
9908 msgstr ""
9909
9910 #.  This case only checked since 2.6.29, and 2.2.2[78].some-stable-version.
9911 #.  In older kernel versions, no check was made for invalid flags.
9912 #. type: Plain text
9913 #: build/C/man2/timerfd_create.2:368
9914 msgid "I<flags> is invalid."
9915 msgstr ""
9916
9917 #. type: Plain text
9918 #: build/C/man2/timerfd_create.2:371
9919 msgid ""
9920 "These system calls are available on Linux since kernel 2.6.25.  Library "
9921 "support is provided by glibc since version 2.8."
9922 msgstr ""
9923
9924 #.  2.6.29
9925 #. type: Plain text
9926 #: build/C/man2/timerfd_create.2:379
9927 msgid ""
9928 "Currently, B<timerfd_create>()  supports fewer types of clock IDs than "
9929 "B<timer_create>(2)."
9930 msgstr ""
9931
9932 #. type: Plain text
9933 #: build/C/man2/timerfd_create.2:388
9934 msgid ""
9935 "The following program creates a timer and then monitors its progress.  The "
9936 "program accepts up to three command-line arguments.  The first argument "
9937 "specifies the number of seconds for the initial expiration of the timer.  "
9938 "The second argument specifies the interval for the timer, in seconds.  The "
9939 "third argument specifies the number of times the program should allow the "
9940 "timer to expire before terminating.  The second and third command-line "
9941 "arguments are optional."
9942 msgstr ""
9943
9944 #. type: Plain text
9945 #: build/C/man2/timerfd_create.2:390 build/C/man2/wait.2:555
9946 msgid "The following shell session demonstrates the use of the program:"
9947 msgstr ""
9948
9949 #. type: Plain text
9950 #: build/C/man2/timerfd_create.2:405
9951 #, no-wrap
9952 msgid ""
9953 "$B< a.out 3 1 100>\n"
9954 "0.000: timer started\n"
9955 "3.000: read: 1; total=1\n"
9956 "4.000: read: 1; total=2\n"
9957 "B<^Z >                 # type control-Z to suspend the program\n"
9958 "[1]+  Stopped                 ./timerfd3_demo 3 1 100\n"
9959 "$ B<fg>                # Resume execution after a few seconds\n"
9960 "a.out 3 1 100\n"
9961 "9.660: read: 5; total=7\n"
9962 "10.000: read: 1; total=8\n"
9963 "11.000: read: 1; total=9\n"
9964 "B<^C >                 # type control-C to suspend the program\n"
9965 msgstr ""
9966
9967 #.  The commented out code here is what we currently need until
9968 #.  the required stuff is in glibc
9969 #
9970 #
9971 #. /* Link with -lrt */
9972 #. #define _GNU_SOURCE
9973 #. #include <sys/syscall.h>
9974 #. #include <unistd.h>
9975 #. #include <time.h>
9976 #. #if defined(__i386__)
9977 #. #define __NR_timerfd_create 322
9978 #. #define __NR_timerfd_settime 325
9979 #. #define __NR_timerfd_gettime 326
9980 #. #endif
9981 #
9982 #. static int
9983 #. timerfd_create(int clockid, int flags)
9984 #. {
9985 #.     return syscall(__NR_timerfd_create, clockid, flags);
9986 #. }
9987 #
9988 #. static int
9989 #. timerfd_settime(int fd, int flags, struct itimerspec *new_value,
9990 #.         struct itimerspec *curr_value)
9991 #. {
9992 #.     return syscall(__NR_timerfd_settime, fd, flags, new_value,
9993 #.                    curr_value);
9994 #. }
9995 #
9996 #. static int
9997 #. timerfd_gettime(int fd, struct itimerspec *curr_value)
9998 #. {
9999 #.     return syscall(__NR_timerfd_gettime, fd, curr_value);
10000 #. }
10001 #
10002 #. #define TFD_TIMER_ABSTIME (1 << 0)
10003 #
10004 #. ////////////////////////////////////////////////////////////
10005 #. type: Plain text
10006 #: build/C/man2/timerfd_create.2:454
10007 #, no-wrap
10008 msgid ""
10009 "#include E<lt>sys/timerfd.hE<gt>\n"
10010 "#include E<lt>time.hE<gt>\n"
10011 "#include E<lt>unistd.hE<gt>\n"
10012 "#include E<lt>stdlib.hE<gt>\n"
10013 "#include E<lt>stdio.hE<gt>\n"
10014 "#include E<lt>stdint.hE<gt>        /* Definition of uint64_t */\n"
10015 msgstr ""
10016
10017 #. type: Plain text
10018 #: build/C/man2/timerfd_create.2:457
10019 #, no-wrap
10020 msgid ""
10021 "#define handle_error(msg) \\e\n"
10022 "        do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
10023 msgstr ""
10024
10025 #. type: Plain text
10026 #: build/C/man2/timerfd_create.2:465
10027 #, no-wrap
10028 msgid ""
10029 "static void\n"
10030 "print_elapsed_time(void)\n"
10031 "{\n"
10032 "    static struct timespec start;\n"
10033 "    struct timespec curr;\n"
10034 "    static int first_call = 1;\n"
10035 "    int secs, nsecs;\n"
10036 msgstr ""
10037
10038 #. type: Plain text
10039 #: build/C/man2/timerfd_create.2:471
10040 #, no-wrap
10041 msgid ""
10042 "    if (first_call) {\n"
10043 "        first_call = 0;\n"
10044 "        if (clock_gettime(CLOCK_MONOTONIC, &start) == -1)\n"
10045 "            handle_error(\"clock_gettime\");\n"
10046 "    }\n"
10047 msgstr ""
10048
10049 #. type: Plain text
10050 #: build/C/man2/timerfd_create.2:474
10051 #, no-wrap
10052 msgid ""
10053 "    if (clock_gettime(CLOCK_MONOTONIC, &curr) == -1)\n"
10054 "        handle_error(\"clock_gettime\");\n"
10055 msgstr ""
10056
10057 #. type: Plain text
10058 #: build/C/man2/timerfd_create.2:483
10059 #, no-wrap
10060 msgid ""
10061 "    secs = curr.tv_sec - start.tv_sec;\n"
10062 "    nsecs = curr.tv_nsec - start.tv_nsec;\n"
10063 "    if (nsecs E<lt> 0) {\n"
10064 "        secs--;\n"
10065 "        nsecs += 1000000000;\n"
10066 "    }\n"
10067 "    printf(\"%d.%03d: \", secs, (nsecs + 500000) / 1000000);\n"
10068 "}\n"
10069 msgstr ""
10070
10071 #. type: Plain text
10072 #: build/C/man2/timerfd_create.2:492
10073 #, no-wrap
10074 msgid ""
10075 "int\n"
10076 "main(int argc, char *argv[])\n"
10077 "{\n"
10078 "    struct itimerspec new_value;\n"
10079 "    int max_exp, fd;\n"
10080 "    struct timespec now;\n"
10081 "    uint64_t exp, tot_exp;\n"
10082 "    ssize_t s;\n"
10083 msgstr ""
10084
10085 #. type: Plain text
10086 #: build/C/man2/timerfd_create.2:498
10087 #, no-wrap
10088 msgid ""
10089 "    if ((argc != 2) && (argc != 4)) {\n"
10090 "        fprintf(stderr, \"%s init-secs [interval-secs max-exp]\\en\",\n"
10091 "                argv[0]);\n"
10092 "        exit(EXIT_FAILURE);\n"
10093 "    }\n"
10094 msgstr ""
10095
10096 #. type: Plain text
10097 #: build/C/man2/timerfd_create.2:501
10098 #, no-wrap
10099 msgid ""
10100 "    if (clock_gettime(CLOCK_REALTIME, &now) == -1)\n"
10101 "        handle_error(\"clock_gettime\");\n"
10102 msgstr ""
10103
10104 #. type: Plain text
10105 #: build/C/man2/timerfd_create.2:504
10106 #, no-wrap
10107 msgid ""
10108 "    /* Create a CLOCK_REALTIME absolute timer with initial\n"
10109 "       expiration and interval as specified in command line */\n"
10110 msgstr ""
10111
10112 #. type: Plain text
10113 #: build/C/man2/timerfd_create.2:515
10114 #, no-wrap
10115 msgid ""
10116 "    new_value.it_value.tv_sec = now.tv_sec + atoi(argv[1]);\n"
10117 "    new_value.it_value.tv_nsec = now.tv_nsec;\n"
10118 "    if (argc == 2) {\n"
10119 "        new_value.it_interval.tv_sec = 0;\n"
10120 "        max_exp = 1;\n"
10121 "    } else {\n"
10122 "        new_value.it_interval.tv_sec = atoi(argv[2]);\n"
10123 "        max_exp = atoi(argv[3]);\n"
10124 "    }\n"
10125 "    new_value.it_interval.tv_nsec = 0;\n"
10126 msgstr ""
10127
10128 #. type: Plain text
10129 #: build/C/man2/timerfd_create.2:519
10130 #, no-wrap
10131 msgid ""
10132 "    fd = timerfd_create(CLOCK_REALTIME, 0);\n"
10133 "    if (fd == -1)\n"
10134 "        handle_error(\"timerfd_create\");\n"
10135 msgstr ""
10136
10137 #. type: Plain text
10138 #: build/C/man2/timerfd_create.2:522
10139 #, no-wrap
10140 msgid ""
10141 "    if (timerfd_settime(fd, TFD_TIMER_ABSTIME, &new_value, NULL) == -1)\n"
10142 "        handle_error(\"timerfd_settime\");\n"
10143 msgstr ""
10144
10145 #. type: Plain text
10146 #: build/C/man2/timerfd_create.2:525
10147 #, no-wrap
10148 msgid ""
10149 "    print_elapsed_time();\n"
10150 "    printf(\"timer started\\en\");\n"
10151 msgstr ""
10152
10153 #. type: Plain text
10154 #: build/C/man2/timerfd_create.2:530
10155 #, no-wrap
10156 msgid ""
10157 "    for (tot_exp = 0; tot_exp E<lt> max_exp;) {\n"
10158 "        s = read(fd, &exp, sizeof(uint64_t));\n"
10159 "        if (s != sizeof(uint64_t))\n"
10160 "            handle_error(\"read\");\n"
10161 msgstr ""
10162
10163 #. type: Plain text
10164 #: build/C/man2/timerfd_create.2:537
10165 #, no-wrap
10166 msgid ""
10167 "        tot_exp += exp;\n"
10168 "        print_elapsed_time();\n"
10169 "        printf(\"read: %llu; total=%llu\\en\",\n"
10170 "                (unsigned long long) exp,\n"
10171 "                (unsigned long long) tot_exp);\n"
10172 "    }\n"
10173 msgstr ""
10174
10175 #. type: Plain text
10176 #: build/C/man2/timerfd_create.2:553
10177 msgid ""
10178 "B<eventfd>(2), B<poll>(2), B<read>(2), B<select>(2), B<setitimer>(2), "
10179 "B<signalfd>(2), B<timer_create>(2), B<timer_gettime>(2), "
10180 "B<timer_settime>(2), B<epoll>(7), B<time>(7)"
10181 msgstr ""
10182
10183 #. type: TH
10184 #: build/C/man2/tkill.2:29
10185 #, no-wrap
10186 msgid "TKILL"
10187 msgstr ""
10188
10189 #. type: Plain text
10190 #: build/C/man2/tkill.2:32
10191 msgid "tkill, tgkill - send a signal to a thread"
10192 msgstr ""
10193
10194 #. type: Plain text
10195 #: build/C/man2/tkill.2:35
10196 #, no-wrap
10197 msgid "B<int tkill(int >I<tid>B<, int >I<sig>B<);>\n"
10198 msgstr ""
10199
10200 #. type: Plain text
10201 #: build/C/man2/tkill.2:37
10202 #, no-wrap
10203 msgid "B<int tgkill(int >I<tgid>B<, int >I<tid>B<, int >I<sig>B<);>\n"
10204 msgstr ""
10205
10206 #. type: Plain text
10207 #: build/C/man2/tkill.2:54
10208 msgid ""
10209 "B<tgkill>()  sends the signal I<sig> to the thread with the thread ID I<tid> "
10210 "in the thread group I<tgid>.  (By contrast, B<kill>(2)  can be used to send "
10211 "a signal only to a process (i.e., thread group)  as a whole, and the signal "
10212 "will be delivered to an arbitrary thread within that process.)"
10213 msgstr ""
10214
10215 #.  FIXME: Maybe say something about the following:
10216 #.  http://sourceware.org/bugzilla/show_bug.cgi?id=12889
10217 #.      Rich Felker <bugdal@aerifal.cx>
10218 #.      There is a race condition in pthread_kill: it is possible that,
10219 #.      between the time pthread_kill reads the pid/tid from the target
10220 #.      thread descriptor and the time it makes the tgkill syscall,
10221 #.      the target thread terminates and the same tid gets assigned
10222 #.      to a new thread in the same process.
10223 #
10224 #.      (The tgkill syscall was designed to eliminate a similar race
10225 #.      condition in tkill, but it only succeeded in eliminating races
10226 #.      where the tid gets reused in a different process, and does not
10227 #.      help if the same tid gets assigned to a new thread in the
10228 #.      same process.)
10229 #
10230 #.      The only solution I can see is to introduce a mutex that ensures
10231 #.      that a thread cannot exit while pthread_kill is being called on it.
10232 #
10233 #.      Note that in most real-world situations, like almost all race
10234 #.      conditions, this one will be extremely rare. To make it
10235 #.      measurable, one could exhaust all but 1-2 available pid values,
10236 #.      possibly by lowering the max pid parameter in /proc, forcing
10237 #.      the same tid to be reused rapidly.
10238 #. type: Plain text
10239 #: build/C/man2/tkill.2:85
10240 msgid ""
10241 "B<tkill>()  is an obsolete predecessor to B<tgkill>().  It allows only the "
10242 "target thread ID to be specified, which may result in the wrong thread being "
10243 "signaled if a thread terminates and its thread ID is recycled.  Avoid using "
10244 "this system call."
10245 msgstr ""
10246
10247 #. type: Plain text
10248 #: build/C/man2/tkill.2:92
10249 msgid "If I<tgid> is specified as -1, B<tgkill>()  is equivalent to B<tkill>()."
10250 msgstr ""
10251
10252 #. type: Plain text
10253 #: build/C/man2/tkill.2:95
10254 msgid ""
10255 "These are the raw system call interfaces, meant for internal thread library "
10256 "use."
10257 msgstr ""
10258
10259 #. type: Plain text
10260 #: build/C/man2/tkill.2:103
10261 msgid "An invalid thread ID, thread group ID, or signal was specified."
10262 msgstr ""
10263
10264 #. type: Plain text
10265 #: build/C/man2/tkill.2:108
10266 msgid "Permission denied.  For the required permissions, see B<kill>(2)."
10267 msgstr ""
10268
10269 #. type: Plain text
10270 #: build/C/man2/tkill.2:111
10271 msgid "No process with the specified thread ID (and thread group ID) exists."
10272 msgstr ""
10273
10274 #. type: Plain text
10275 #: build/C/man2/tkill.2:116
10276 msgid ""
10277 "B<tkill>()  is supported since Linux 2.4.19 / 2.5.4.  B<tgkill>()  was added "
10278 "in Linux 2.5.75."
10279 msgstr ""
10280
10281 #. type: Plain text
10282 #: build/C/man2/tkill.2:122
10283 msgid ""
10284 "B<tkill>()  and B<tgkill>()  are Linux-specific and should not be used in "
10285 "programs that are intended to be portable."
10286 msgstr ""
10287
10288 #. type: Plain text
10289 #: build/C/man2/tkill.2:128
10290 msgid ""
10291 "See the description of B<CLONE_THREAD> in B<clone>(2)  for an explanation of "
10292 "thread groups."
10293 msgstr ""
10294
10295 #. type: Plain text
10296 #: build/C/man2/tkill.2:131
10297 msgid ""
10298 "Glibc does not provide wrappers for these system calls; call them using "
10299 "B<syscall>(2)."
10300 msgstr ""
10301
10302 #. type: Plain text
10303 #: build/C/man2/tkill.2:136
10304 msgid "B<clone>(2), B<gettid>(2), B<kill>(2), B<rt_sigqueueinfo>(2)"
10305 msgstr ""
10306
10307 #. type: TH
10308 #: build/C/man2/wait.2:49
10309 #, no-wrap
10310 msgid "WAIT"
10311 msgstr ""
10312
10313 #. type: TH
10314 #: build/C/man2/wait.2:49
10315 #, no-wrap
10316 msgid "2012-12-21"
10317 msgstr ""
10318
10319 #. type: Plain text
10320 #: build/C/man2/wait.2:52
10321 msgid "wait, waitpid, waitid - wait for process to change state"
10322 msgstr ""
10323
10324 #. type: Plain text
10325 #: build/C/man2/wait.2:54
10326 msgid "B<#include E<lt>sys/types.hE<gt>>"
10327 msgstr ""
10328
10329 #. type: Plain text
10330 #: build/C/man2/wait.2:56
10331 msgid "B<#include E<lt>sys/wait.hE<gt>>"
10332 msgstr ""
10333
10334 #. type: Plain text
10335 #: build/C/man2/wait.2:58
10336 msgid "B<pid_t wait(int *>I<status>B<);>"
10337 msgstr ""
10338
10339 #. type: Plain text
10340 #: build/C/man2/wait.2:60
10341 msgid "B<pid_t waitpid(pid_t >I<pid>B<, int *>I<status>B<, int >I<options>B<);>"
10342 msgstr ""
10343
10344 #. type: Plain text
10345 #: build/C/man2/wait.2:63
10346 msgid ""
10347 "B<int waitid(idtype_t >I<idtype>B<, id_t >I<id>B<, siginfo_t *>I<infop>B<, "
10348 "int >I<options>B<);>"
10349 msgstr ""
10350
10351 #. type: Plain text
10352 #: build/C/man2/wait.2:72
10353 msgid "B<waitid>():"
10354 msgstr ""
10355
10356 #. type: Plain text
10357 #: build/C/man2/wait.2:76
10358 msgid ""
10359 "_SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || _XOPEN_SOURCE\\ &&\\ "
10360 "_XOPEN_SOURCE_EXTENDED"
10361 msgstr ""
10362
10363 #. type: Plain text
10364 #: build/C/man2/wait.2:91
10365 msgid ""
10366 "All of these system calls are used to wait for state changes in a child of "
10367 "the calling process, and obtain information about the child whose state has "
10368 "changed.  A state change is considered to be: the child terminated; the "
10369 "child was stopped by a signal; or the child was resumed by a signal.  In the "
10370 "case of a terminated child, performing a wait allows the system to release "
10371 "the resources associated with the child; if a wait is not performed, then "
10372 "the terminated child remains in a \"zombie\" state (see NOTES below)."
10373 msgstr ""
10374
10375 #. type: Plain text
10376 #: build/C/man2/wait.2:103
10377 msgid ""
10378 "If a child has already changed state, then these calls return immediately.  "
10379 "Otherwise they block until either a child changes state or a signal handler "
10380 "interrupts the call (assuming that system calls are not automatically "
10381 "restarted using the B<SA_RESTART> flag of B<sigaction>(2)).  In the "
10382 "remainder of this page, a child whose state has changed and which has not "
10383 "yet been waited upon by one of these system calls is termed I<waitable>."
10384 msgstr ""
10385
10386 #. type: SS
10387 #: build/C/man2/wait.2:103
10388 #, no-wrap
10389 msgid "wait() and waitpid()"
10390 msgstr ""
10391
10392 #. type: Plain text
10393 #: build/C/man2/wait.2:111
10394 msgid ""
10395 "The B<wait>()  system call suspends execution of the calling process until "
10396 "one of its children terminates.  The call I<wait(&status)> is equivalent to:"
10397 msgstr ""
10398
10399 #. type: Plain text
10400 #: build/C/man2/wait.2:114
10401 #, no-wrap
10402 msgid "    waitpid(-1, &status, 0);\n"
10403 msgstr ""
10404
10405 #. type: Plain text
10406 #: build/C/man2/wait.2:128
10407 msgid ""
10408 "The B<waitpid>()  system call suspends execution of the calling process "
10409 "until a child specified by I<pid> argument has changed state.  By default, "
10410 "B<waitpid>()  waits only for terminated children, but this behavior is "
10411 "modifiable via the I<options> argument, as described below."
10412 msgstr ""
10413
10414 #. type: Plain text
10415 #: build/C/man2/wait.2:132
10416 msgid "The value of I<pid> can be:"
10417 msgstr ""
10418
10419 #. type: IP
10420 #: build/C/man2/wait.2:132
10421 #, no-wrap
10422 msgid "E<lt> -1"
10423 msgstr ""
10424
10425 #. type: Plain text
10426 #: build/C/man2/wait.2:136
10427 msgid ""
10428 "meaning wait for any child process whose process group ID is equal to the "
10429 "absolute value of I<pid>."
10430 msgstr ""
10431
10432 #. type: IP
10433 #: build/C/man2/wait.2:136
10434 #, no-wrap
10435 msgid "-1"
10436 msgstr ""
10437
10438 #. type: Plain text
10439 #: build/C/man2/wait.2:138
10440 msgid "meaning wait for any child process."
10441 msgstr ""
10442
10443 #. type: IP
10444 #: build/C/man2/wait.2:138
10445 #, no-wrap
10446 msgid "0"
10447 msgstr ""
10448
10449 #. type: Plain text
10450 #: build/C/man2/wait.2:141
10451 msgid ""
10452 "meaning wait for any child process whose process group ID is equal to that "
10453 "of the calling process."
10454 msgstr ""
10455
10456 #. type: IP
10457 #: build/C/man2/wait.2:141
10458 #, no-wrap
10459 msgid "E<gt> 0"
10460 msgstr ""
10461
10462 #. type: Plain text
10463 #: build/C/man2/wait.2:145
10464 msgid "meaning wait for the child whose process ID is equal to the value of I<pid>."
10465 msgstr ""
10466
10467 #. type: Plain text
10468 #: build/C/man2/wait.2:149
10469 msgid "The value of I<options> is an OR of zero or more of the following constants:"
10470 msgstr ""
10471
10472 #. type: TP
10473 #: build/C/man2/wait.2:149 build/C/man2/wait.2:278
10474 #, no-wrap
10475 msgid "B<WNOHANG>"
10476 msgstr ""
10477
10478 #. type: Plain text
10479 #: build/C/man2/wait.2:152
10480 msgid "return immediately if no child has exited."
10481 msgstr ""
10482
10483 #. type: TP
10484 #: build/C/man2/wait.2:152
10485 #, no-wrap
10486 msgid "B<WUNTRACED>"
10487 msgstr ""
10488
10489 #. type: Plain text
10490 #: build/C/man2/wait.2:161
10491 msgid ""
10492 "also return if a child has stopped (but not traced via B<ptrace>(2)).  "
10493 "Status for I<traced> children which have stopped is provided even if this "
10494 "option is not specified."
10495 msgstr ""
10496
10497 #. type: TP
10498 #: build/C/man2/wait.2:161
10499 #, no-wrap
10500 msgid "B<WCONTINUED> (since Linux 2.6.10)"
10501 msgstr ""
10502
10503 #. type: Plain text
10504 #: build/C/man2/wait.2:165
10505 msgid "also return if a stopped child has been resumed by delivery of B<SIGCONT>."
10506 msgstr ""
10507
10508 #. type: Plain text
10509 #: build/C/man2/wait.2:167
10510 msgid "(For Linux-only options, see below.)"
10511 msgstr ""
10512
10513 #. type: Plain text
10514 #: build/C/man2/wait.2:181
10515 msgid ""
10516 "If I<status> is not NULL, B<wait>()  and B<waitpid>()  store status "
10517 "information in the I<int> to which it points.  This integer can be inspected "
10518 "with the following macros (which take the integer itself as an argument, not "
10519 "a pointer to it, as is done in B<wait>()  and B<waitpid>()!):"
10520 msgstr ""
10521
10522 #. type: TP
10523 #: build/C/man2/wait.2:181
10524 #, no-wrap
10525 msgid "B<WIFEXITED(>I<status>B<)>"
10526 msgstr ""
10527
10528 #. type: Plain text
10529 #: build/C/man2/wait.2:189
10530 msgid ""
10531 "returns true if the child terminated normally, that is, by calling "
10532 "B<exit>(3)  or B<_exit>(2), or by returning from main()."
10533 msgstr ""
10534
10535 #. type: TP
10536 #: build/C/man2/wait.2:189
10537 #, no-wrap
10538 msgid "B<WEXITSTATUS(>I<status>B<)>"
10539 msgstr ""
10540
10541 #. type: Plain text
10542 #: build/C/man2/wait.2:202
10543 msgid ""
10544 "returns the exit status of the child.  This consists of the least "
10545 "significant 8 bits of the I<status> argument that the child specified in a "
10546 "call to B<exit>(3)  or B<_exit>(2)  or as the argument for a return "
10547 "statement in main().  This macro should be employed only if B<WIFEXITED> "
10548 "returned true."
10549 msgstr ""
10550
10551 #. type: TP
10552 #: build/C/man2/wait.2:202
10553 #, no-wrap
10554 msgid "B<WIFSIGNALED(>I<status>B<)>"
10555 msgstr ""
10556
10557 #. type: Plain text
10558 #: build/C/man2/wait.2:205
10559 msgid "returns true if the child process was terminated by a signal."
10560 msgstr ""
10561
10562 #. type: TP
10563 #: build/C/man2/wait.2:205
10564 #, no-wrap
10565 msgid "B<WTERMSIG(>I<status>B<)>"
10566 msgstr ""
10567
10568 #. type: Plain text
10569 #: build/C/man2/wait.2:212
10570 msgid ""
10571 "returns the number of the signal that caused the child process to "
10572 "terminate.  This macro should be employed only if B<WIFSIGNALED> returned "
10573 "true."
10574 msgstr ""
10575
10576 #. type: TP
10577 #: build/C/man2/wait.2:212
10578 #, no-wrap
10579 msgid "B<WCOREDUMP(>I<status>B<)>"
10580 msgstr ""
10581
10582 #. type: Plain text
10583 #: build/C/man2/wait.2:221
10584 msgid ""
10585 "returns true if the child produced a core dump.  This macro should be "
10586 "employed only if B<WIFSIGNALED> returned true.  This macro is not specified "
10587 "in POSIX.1-2001 and is not available on some UNIX implementations (e.g., "
10588 "AIX, SunOS).  Only use this enclosed in #ifdef WCOREDUMP ... #endif."
10589 msgstr ""
10590
10591 #. type: TP
10592 #: build/C/man2/wait.2:221
10593 #, no-wrap
10594 msgid "B<WIFSTOPPED(>I<status>B<)>"
10595 msgstr ""
10596
10597 #. type: Plain text
10598 #: build/C/man2/wait.2:228
10599 msgid ""
10600 "returns true if the child process was stopped by delivery of a signal; this "
10601 "is possible only if the call was done using B<WUNTRACED> or when the child "
10602 "is being traced (see B<ptrace>(2))."
10603 msgstr ""
10604
10605 #. type: TP
10606 #: build/C/man2/wait.2:228
10607 #, no-wrap
10608 msgid "B<WSTOPSIG(>I<status>B<)>"
10609 msgstr ""
10610
10611 #. type: Plain text
10612 #: build/C/man2/wait.2:234
10613 msgid ""
10614 "returns the number of the signal which caused the child to stop.  This macro "
10615 "should be employed only if B<WIFSTOPPED> returned true."
10616 msgstr ""
10617
10618 #. type: TP
10619 #: build/C/man2/wait.2:234
10620 #, no-wrap
10621 msgid "B<WIFCONTINUED(>I<status>B<)>"
10622 msgstr ""
10623
10624 #. type: Plain text
10625 #: build/C/man2/wait.2:239
10626 msgid ""
10627 "(since Linux 2.6.10)  returns true if the child process was resumed by "
10628 "delivery of B<SIGCONT>."
10629 msgstr ""
10630
10631 #. type: SS
10632 #: build/C/man2/wait.2:239
10633 #, no-wrap
10634 msgid "waitid()"
10635 msgstr ""
10636
10637 #. type: Plain text
10638 #: build/C/man2/wait.2:244
10639 msgid ""
10640 "The B<waitid>()  system call (available since Linux 2.6.9) provides more "
10641 "precise control over which child state changes to wait for."
10642 msgstr ""
10643
10644 #. type: Plain text
10645 #: build/C/man2/wait.2:250
10646 msgid ""
10647 "The I<idtype> and I<id> arguments select the child(ren) to wait for, as "
10648 "follows:"
10649 msgstr ""
10650
10651 #. type: IP
10652 #: build/C/man2/wait.2:250
10653 #, no-wrap
10654 msgid "I<idtype> == B<P_PID>"
10655 msgstr ""
10656
10657 #. type: Plain text
10658 #: build/C/man2/wait.2:253
10659 msgid "Wait for the child whose process ID matches I<id>."
10660 msgstr ""
10661
10662 #. type: IP
10663 #: build/C/man2/wait.2:253
10664 #, no-wrap
10665 msgid "I<idtype> == B<P_PGID>"
10666 msgstr ""
10667
10668 #. type: Plain text
10669 #: build/C/man2/wait.2:256
10670 msgid "Wait for any child whose process group ID matches I<id>."
10671 msgstr ""
10672
10673 #. type: IP
10674 #: build/C/man2/wait.2:256
10675 #, no-wrap
10676 msgid "I<idtype> == B<P_ALL>"
10677 msgstr ""
10678
10679 #. type: Plain text
10680 #: build/C/man2/wait.2:260
10681 msgid "Wait for any child; I<id> is ignored."
10682 msgstr ""
10683
10684 #. type: Plain text
10685 #: build/C/man2/wait.2:264
10686 msgid ""
10687 "The child state changes to wait for are specified by ORing one or more of "
10688 "the following flags in I<options>:"
10689 msgstr ""
10690
10691 #. type: TP
10692 #: build/C/man2/wait.2:264
10693 #, no-wrap
10694 msgid "B<WEXITED>"
10695 msgstr ""
10696
10697 #. type: Plain text
10698 #: build/C/man2/wait.2:267
10699 msgid "Wait for children that have terminated."
10700 msgstr ""
10701
10702 #. type: TP
10703 #: build/C/man2/wait.2:267
10704 #, no-wrap
10705 msgid "B<WSTOPPED>"
10706 msgstr ""
10707
10708 #. type: Plain text
10709 #: build/C/man2/wait.2:270
10710 msgid "Wait for children that have been stopped by delivery of a signal."
10711 msgstr ""
10712
10713 #. type: TP
10714 #: build/C/man2/wait.2:270
10715 #, no-wrap
10716 msgid "B<WCONTINUED>"
10717 msgstr ""
10718
10719 #. type: Plain text
10720 #: build/C/man2/wait.2:275
10721 msgid ""
10722 "Wait for (previously stopped) children that have been resumed by delivery of "
10723 "B<SIGCONT>."
10724 msgstr ""
10725
10726 #. type: Plain text
10727 #: build/C/man2/wait.2:278
10728 msgid "The following flags may additionally be ORed in I<options>:"
10729 msgstr ""
10730
10731 #. type: Plain text
10732 #: build/C/man2/wait.2:282
10733 msgid "As for B<waitpid>()."
10734 msgstr ""
10735
10736 #. type: TP
10737 #: build/C/man2/wait.2:282
10738 #, no-wrap
10739 msgid "B<WNOWAIT>"
10740 msgstr ""
10741
10742 #. type: Plain text
10743 #: build/C/man2/wait.2:286
10744 msgid ""
10745 "Leave the child in a waitable state; a later wait call can be used to again "
10746 "retrieve the child status information."
10747 msgstr ""
10748
10749 #. type: Plain text
10750 #: build/C/man2/wait.2:293
10751 msgid ""
10752 "Upon successful return, B<waitid>()  fills in the following fields of the "
10753 "I<siginfo_t> structure pointed to by I<infop>:"
10754 msgstr ""
10755
10756 #. type: Plain text
10757 #: build/C/man2/wait.2:296
10758 msgid "The process ID of the child."
10759 msgstr ""
10760
10761 #. type: Plain text
10762 #: build/C/man2/wait.2:300
10763 msgid ""
10764 "The real user ID of the child.  (This field is not set on most other "
10765 "implementations.)"
10766 msgstr ""
10767
10768 #. type: Plain text
10769 #: build/C/man2/wait.2:304
10770 msgid "Always set to B<SIGCHLD>."
10771 msgstr ""
10772
10773 #. type: TP
10774 #: build/C/man2/wait.2:304
10775 #, no-wrap
10776 msgid "I<si_status>"
10777 msgstr ""
10778
10779 #. type: Plain text
10780 #: build/C/man2/wait.2:314
10781 msgid ""
10782 "Either the exit status of the child, as given to B<_exit>(2)  (or "
10783 "B<exit>(3)), or the signal that caused the child to terminate, stop, or "
10784 "continue.  The I<si_code> field can be used to determine how to interpret "
10785 "this field."
10786 msgstr ""
10787
10788 #. type: Plain text
10789 #: build/C/man2/wait.2:331
10790 msgid ""
10791 "Set to one of: B<CLD_EXITED> (child called B<_exit>(2)); B<CLD_KILLED> "
10792 "(child killed by signal); B<CLD_DUMPED> (child killed by signal, and dumped "
10793 "core); B<CLD_STOPPED> (child stopped by signal); B<CLD_TRAPPED> (traced "
10794 "child has trapped); or B<CLD_CONTINUED> (child continued by B<SIGCONT>)."
10795 msgstr ""
10796
10797 #.  POSIX.1-2001 leaves this possibility unspecified; most
10798 #.  implementations (including Linux) zero out the structure
10799 #.  in this case, but at least one implementation (AIX 5.1)
10800 #.  does not -- MTK Nov 04
10801 #. type: Plain text
10802 #: build/C/man2/wait.2:353
10803 msgid ""
10804 "If B<WNOHANG> was specified in I<options> and there were no children in a "
10805 "waitable state, then B<waitid>()  returns 0 immediately and the state of the "
10806 "I<siginfo_t> structure pointed to by I<infop> is unspecified.  To "
10807 "distinguish this case from that where a child was in a waitable state, zero "
10808 "out the I<si_pid> field before the call and check for a nonzero value in "
10809 "this field after the call returns."
10810 msgstr ""
10811
10812 #. type: Plain text
10813 #: build/C/man2/wait.2:357
10814 msgid ""
10815 "B<wait>(): on success, returns the process ID of the terminated child; on "
10816 "error, -1 is returned."
10817 msgstr ""
10818
10819 #. type: Plain text
10820 #: build/C/man2/wait.2:366
10821 msgid ""
10822 "B<waitpid>(): on success, returns the process ID of the child whose state "
10823 "has changed; if B<WNOHANG> was specified and one or more child(ren) "
10824 "specified by I<pid> exist, but have not yet changed state, then 0 is "
10825 "returned.  On error, -1 is returned."
10826 msgstr ""
10827
10828 #.  FIXME: As reported by Vegard Nossum, if infop is NULL, then waitid()
10829 #.  returns the PID of the child.  Either this is a bug, or it is intended
10830 #.  behavior that needs to be documented.  See my Jan 2009 LKML mail
10831 #.  "waitid() return value strangeness when infop is NULL".
10832 #. type: Plain text
10833 #: build/C/man2/wait.2:382
10834 msgid ""
10835 "B<waitid>(): returns 0 on success or if B<WNOHANG> was specified and no "
10836 "child(ren) specified by I<id> has yet changed state; on error, -1 is "
10837 "returned.  Each of these calls sets I<errno> to an appropriate value in the "
10838 "case of an error."
10839 msgstr ""
10840
10841 #. type: TP
10842 #: build/C/man2/wait.2:383 build/C/man2/wait.2:388
10843 #, no-wrap
10844 msgid "B<ECHILD>"
10845 msgstr ""
10846
10847 #. type: Plain text
10848 #: build/C/man2/wait.2:388
10849 msgid ""
10850 "(for B<wait>())  The calling process does not have any unwaited-for "
10851 "children."
10852 msgstr ""
10853
10854 #. type: Plain text
10855 #: build/C/man2/wait.2:408
10856 msgid ""
10857 "(for B<waitpid>()  or B<waitid>())  The process specified by I<pid> "
10858 "(B<waitpid>())  or I<idtype> and I<id> (B<waitid>())  does not exist or is "
10859 "not a child of the calling process.  (This can happen for one's own child if "
10860 "the action for B<SIGCHLD> is set to B<SIG_IGN>.  See also the I<Linux Notes> "
10861 "section about threads.)"
10862 msgstr ""
10863
10864 #. type: Plain text
10865 #: build/C/man2/wait.2:415
10866 msgid ""
10867 "B<WNOHANG> was not set and an unblocked signal or a B<SIGCHLD> was caught; "
10868 "see B<signal>(7)."
10869 msgstr ""
10870
10871 #. type: Plain text
10872 #: build/C/man2/wait.2:420
10873 msgid "The I<options> argument was invalid."
10874 msgstr ""
10875
10876 #. type: Plain text
10877 #: build/C/man2/wait.2:435
10878 msgid ""
10879 "A child that terminates, but has not been waited for becomes a \"zombie\".  "
10880 "The kernel maintains a minimal set of information about the zombie process "
10881 "(PID, termination status, resource usage information)  in order to allow the "
10882 "parent to later perform a wait to obtain information about the child.  As "
10883 "long as a zombie is not removed from the system via a wait, it will consume "
10884 "a slot in the kernel process table, and if this table fills, it will not be "
10885 "possible to create further processes.  If a parent process terminates, then "
10886 "its \"zombie\" children (if any)  are adopted by B<init>(8), which "
10887 "automatically performs a wait to remove the zombies."
10888 msgstr ""
10889
10890 #. type: Plain text
10891 #: build/C/man2/wait.2:476
10892 msgid ""
10893 "POSIX.1-2001 specifies that if the disposition of B<SIGCHLD> is set to "
10894 "B<SIG_IGN> or the B<SA_NOCLDWAIT> flag is set for B<SIGCHLD> (see "
10895 "B<sigaction>(2)), then children that terminate do not become zombies and a "
10896 "call to B<wait>()  or B<waitpid>()  will block until all children have "
10897 "terminated, and then fail with I<errno> set to B<ECHILD>.  (The original "
10898 "POSIX standard left the behavior of setting B<SIGCHLD> to B<SIG_IGN> "
10899 "unspecified.  Note that even though the default disposition of B<SIGCHLD> is "
10900 "\"ignore\", explicitly setting the disposition to B<SIG_IGN> results in "
10901 "different treatment of zombie process children.)  Linux 2.6 conforms to this "
10902 "specification.  However, Linux 2.4 (and earlier) does not: if a B<wait>()  "
10903 "or B<waitpid>()  call is made while B<SIGCHLD> is being ignored, the call "
10904 "behaves just as though B<SIGCHLD> were not being ignored, that is, the call "
10905 "blocks until the next child terminates and then returns the process ID and "
10906 "status of that child."
10907 msgstr ""
10908
10909 #. type: Plain text
10910 #: build/C/man2/wait.2:492
10911 msgid ""
10912 "In the Linux kernel, a kernel-scheduled thread is not a distinct construct "
10913 "from a process.  Instead, a thread is simply a process that is created using "
10914 "the Linux-unique B<clone>(2)  system call; other routines such as the "
10915 "portable B<pthread_create>(3)  call are implemented using B<clone>(2).  "
10916 "Before Linux 2.4, a thread was just a special case of a process, and as a "
10917 "consequence one thread could not wait on the children of another thread, "
10918 "even when the latter belongs to the same thread group.  However, POSIX "
10919 "prescribes such functionality, and since Linux 2.4 a thread can, and by "
10920 "default will, wait on children of other threads in the same thread group."
10921 msgstr ""
10922
10923 #. type: Plain text
10924 #: build/C/man2/wait.2:499
10925 msgid ""
10926 "The following Linux-specific I<options> are for use with children created "
10927 "using B<clone>(2); they cannot be used with B<waitid>():"
10928 msgstr ""
10929
10930 #. type: TP
10931 #: build/C/man2/wait.2:499
10932 #, no-wrap
10933 msgid "B<__WCLONE>"
10934 msgstr ""
10935
10936 #.  since 0.99pl10
10937 #. type: Plain text
10938 #: build/C/man2/wait.2:510
10939 msgid ""
10940 "Wait for \"clone\" children only.  If omitted then wait for \"non-clone\" "
10941 "children only.  (A \"clone\" child is one which delivers no signal, or a "
10942 "signal other than B<SIGCHLD> to its parent upon termination.)  This option "
10943 "is ignored if B<__WALL> is also specified."
10944 msgstr ""
10945
10946 #. type: TP
10947 #: build/C/man2/wait.2:510
10948 #, no-wrap
10949 msgid "B<__WALL> (since Linux 2.4)"
10950 msgstr ""
10951
10952 #.  since patch-2.3.48
10953 #. type: Plain text
10954 #: build/C/man2/wait.2:515
10955 msgid "Wait for all children, regardless of type (\"clone\" or \"non-clone\")."
10956 msgstr ""
10957
10958 #. type: TP
10959 #: build/C/man2/wait.2:515
10960 #, no-wrap
10961 msgid "B<__WNOTHREAD> (since Linux 2.4)"
10962 msgstr ""
10963
10964 #.  since patch-2.4.0-test8
10965 #. type: Plain text
10966 #: build/C/man2/wait.2:521
10967 msgid ""
10968 "Do not wait for children of other threads in the same thread group.  This "
10969 "was the default before Linux 2.4."
10970 msgstr ""
10971
10972 #. type: Plain text
10973 #: build/C/man2/wait.2:536
10974 msgid ""
10975 "According to POSIX.1-2008, an application calling B<waitid>()  must ensure "
10976 "that I<infop> points to a I<siginfo_t> structure (i.e., that it is a "
10977 "non-NULL pointer).  On Linux, if I<infop> is NULL, B<waitid>()  succeeds, "
10978 "and returns the process ID of the waited-for child.  Applications should "
10979 "avoid relying on this inconsistent, nonstandard, and unnecessary feature."
10980 msgstr ""
10981
10982 #.  fork.2 refers to this example program.
10983 #. type: Plain text
10984 #: build/C/man2/wait.2:553
10985 msgid ""
10986 "The following program demonstrates the use of B<fork>(2)  and B<waitpid>().  "
10987 "The program creates a child process.  If no command-line argument is "
10988 "supplied to the program, then the child suspends its execution using "
10989 "B<pause>(2), to allow the user to send signals to the child.  Otherwise, if "
10990 "a command-line argument is supplied, then the child exits immediately, using "
10991 "the integer supplied on the command line as the exit status.  The parent "
10992 "process executes a loop that monitors the child using B<waitpid>(), and uses "
10993 "the W*() macros described above to analyze the wait status value."
10994 msgstr ""
10995
10996 #. type: Plain text
10997 #: build/C/man2/wait.2:569
10998 #, no-wrap
10999 msgid ""
11000 "$B< ./a.out &>\n"
11001 "Child PID is 32360\n"
11002 "[1] 32359\n"
11003 "$B< kill -STOP 32360>\n"
11004 "stopped by signal 19\n"
11005 "$B< kill -CONT 32360>\n"
11006 "continued\n"
11007 "$B< kill -TERM 32360>\n"
11008 "killed by signal 15\n"
11009 "[1]+  Done                    ./a.out\n"
11010 "$\n"
11011 msgstr ""
11012
11013 #. type: Plain text
11014 #: build/C/man2/wait.2:578
11015 #, no-wrap
11016 msgid ""
11017 "#include E<lt>sys/wait.hE<gt>\n"
11018 "#include E<lt>stdlib.hE<gt>\n"
11019 "#include E<lt>unistd.hE<gt>\n"
11020 "#include E<lt>stdio.hE<gt>\n"
11021 msgstr ""
11022
11023 #. type: Plain text
11024 #: build/C/man2/wait.2:584
11025 #, no-wrap
11026 msgid ""
11027 "int\n"
11028 "main(int argc, char *argv[])\n"
11029 "{\n"
11030 "    pid_t cpid, w;\n"
11031 "    int status;\n"
11032 msgstr ""
11033
11034 #. type: Plain text
11035 #: build/C/man2/wait.2:590
11036 #, no-wrap
11037 msgid ""
11038 "    cpid = fork();\n"
11039 "    if (cpid == -1) {\n"
11040 "        perror(\"fork\");\n"
11041 "        exit(EXIT_FAILURE);\n"
11042 "    }\n"
11043 msgstr ""
11044
11045 #. type: Plain text
11046 #: build/C/man2/wait.2:596
11047 #, no-wrap
11048 msgid ""
11049 "    if (cpid == 0) {            /* Code executed by child */\n"
11050 "        printf(\"Child PID is %ld\\en\", (long) getpid());\n"
11051 "        if (argc == 1)\n"
11052 "            pause();                    /* Wait for signals */\n"
11053 "        _exit(atoi(argv[1]));\n"
11054 msgstr ""
11055
11056 #. type: Plain text
11057 #: build/C/man2/wait.2:604
11058 #, no-wrap
11059 msgid ""
11060 "    } else {                    /* Code executed by parent */\n"
11061 "        do {\n"
11062 "            w = waitpid(cpid, &status, WUNTRACED | WCONTINUED);\n"
11063 "            if (w == -1) {\n"
11064 "                perror(\"waitpid\");\n"
11065 "                exit(EXIT_FAILURE);\n"
11066 "            }\n"
11067 msgstr ""
11068
11069 #. type: Plain text
11070 #: build/C/man2/wait.2:618
11071 #, no-wrap
11072 msgid ""
11073 "            if (WIFEXITED(status)) {\n"
11074 "                printf(\"exited, status=%d\\en\", WEXITSTATUS(status));\n"
11075 "            } else if (WIFSIGNALED(status)) {\n"
11076 "                printf(\"killed by signal %d\\en\", WTERMSIG(status));\n"
11077 "            } else if (WIFSTOPPED(status)) {\n"
11078 "                printf(\"stopped by signal %d\\en\", WSTOPSIG(status));\n"
11079 "            } else if (WIFCONTINUED(status)) {\n"
11080 "                printf(\"continued\\en\");\n"
11081 "            }\n"
11082 "        } while (!WIFEXITED(status) && !WIFSIGNALED(status));\n"
11083 "        exit(EXIT_SUCCESS);\n"
11084 "    }\n"
11085 "}\n"
11086 msgstr ""
11087
11088 #. type: Plain text
11089 #: build/C/man2/wait.2:631
11090 msgid ""
11091 "B<_exit>(2), B<clone>(2), B<fork>(2), B<kill>(2), B<ptrace>(2), "
11092 "B<sigaction>(2), B<signal>(2), B<wait4>(2), B<pthread_create>(3), "
11093 "B<credentials>(7), B<signal>(7)"
11094 msgstr ""
11095
11096 #. type: TH
11097 #: build/C/man2/wait4.2:33
11098 #, no-wrap
11099 msgid "WAIT4"
11100 msgstr ""
11101
11102 #. type: TH
11103 #: build/C/man2/wait4.2:33
11104 #, no-wrap
11105 msgid "2012-09-23"
11106 msgstr ""
11107
11108 #. type: Plain text
11109 #: build/C/man2/wait4.2:36
11110 msgid "wait3, wait4 - wait for process to change state, BSD style"
11111 msgstr ""
11112
11113 #. type: Plain text
11114 #: build/C/man2/wait4.2:42
11115 #, no-wrap
11116 msgid ""
11117 "B<#include E<lt>sys/types.hE<gt>>\n"
11118 "B<#include E<lt>sys/time.hE<gt>>\n"
11119 "B<#include E<lt>sys/resource.hE<gt>>\n"
11120 "B<#include E<lt>sys/wait.hE<gt>>\n"
11121 msgstr ""
11122
11123 #. type: Plain text
11124 #: build/C/man2/wait4.2:45
11125 #, no-wrap
11126 msgid ""
11127 "B<pid_t wait3(int *>I<status>B<, int >I<options>B<,>\n"
11128 "B<            struct rusage *>I<rusage>B<);>\n"
11129 msgstr ""
11130
11131 #. type: Plain text
11132 #: build/C/man2/wait4.2:48
11133 #, no-wrap
11134 msgid ""
11135 "B<pid_t wait4(pid_t >I<pid>B<, int *>I<status>B<, int >I<options>B<,>\n"
11136 "B<            struct rusage *>I<rusage>B<);>\n"
11137 msgstr ""
11138
11139 #. type: Plain text
11140 #: build/C/man2/wait4.2:57
11141 msgid "B<wait3>():"
11142 msgstr ""
11143
11144 #. type: Plain text
11145 #: build/C/man2/wait4.2:63
11146 msgid "B<wait4>():"
11147 msgstr ""
11148
11149 #. type: Plain text
11150 #: build/C/man2/wait4.2:65
11151 msgid "_BSD_SOURCE"
11152 msgstr ""
11153
11154 #. type: Plain text
11155 #: build/C/man2/wait4.2:73
11156 msgid ""
11157 "These functions are obsolete; use B<waitpid>(2)  or B<waitid>(2)  in new "
11158 "programs."
11159 msgstr ""
11160
11161 #. type: Plain text
11162 #: build/C/man2/wait4.2:83
11163 msgid ""
11164 "The B<wait3>()  and B<wait4>()  system calls are similar to B<waitpid>(2), "
11165 "but additionally return resource usage information about the child in the "
11166 "structure pointed to by I<rusage>."
11167 msgstr ""
11168
11169 #. type: Plain text
11170 #: build/C/man2/wait4.2:89
11171 msgid ""
11172 "Other than the use of the I<rusage> argument, the following B<wait3>()  "
11173 "call:"
11174 msgstr ""
11175
11176 #. type: Plain text
11177 #: build/C/man2/wait4.2:92
11178 #, no-wrap
11179 msgid "    wait3(status, options, rusage);\n"
11180 msgstr ""
11181
11182 #. type: Plain text
11183 #: build/C/man2/wait4.2:95 build/C/man2/wait4.2:109
11184 msgid "is equivalent to:"
11185 msgstr ""
11186
11187 #. type: Plain text
11188 #: build/C/man2/wait4.2:98
11189 #, no-wrap
11190 msgid "    waitpid(-1, status, options);\n"
11191 msgstr ""
11192
11193 #. type: Plain text
11194 #: build/C/man2/wait4.2:103
11195 msgid "Similarly, the following B<wait4>()  call:"
11196 msgstr ""
11197
11198 #. type: Plain text
11199 #: build/C/man2/wait4.2:106
11200 #, no-wrap
11201 msgid "    wait4(pid, status, options, rusage);\n"
11202 msgstr ""
11203
11204 #. type: Plain text
11205 #: build/C/man2/wait4.2:112
11206 #, no-wrap
11207 msgid "    waitpid(pid, status, options);\n"
11208 msgstr ""
11209
11210 #. type: Plain text
11211 #: build/C/man2/wait4.2:122
11212 msgid ""
11213 "In other words, B<wait3>()  waits of any child, while B<wait4>()  can be "
11214 "used to select a specific child, or children, on which to wait.  See "
11215 "B<wait>(2)  for further details."
11216 msgstr ""
11217
11218 #. type: Plain text
11219 #: build/C/man2/wait4.2:132
11220 msgid ""
11221 "If I<rusage> is not NULL, the I<struct rusage> to which it points will be "
11222 "filled with accounting information about the child.  See B<getrusage>(2)  "
11223 "for details."
11224 msgstr ""
11225
11226 #. type: Plain text
11227 #: build/C/man2/wait4.2:135 build/C/man2/wait4.2:138
11228 msgid "As for B<waitpid>(2)."
11229 msgstr ""
11230
11231 #. type: Plain text
11232 #: build/C/man2/wait4.2:140
11233 msgid "4.3BSD."
11234 msgstr ""
11235
11236 #. type: Plain text
11237 #: build/C/man2/wait4.2:147
11238 msgid ""
11239 "SUSv1 included a specification of B<wait3>(); SUSv2 included B<wait3>(), but "
11240 "marked it LEGACY; SUSv3 removed it."
11241 msgstr ""
11242
11243 #. type: Plain text
11244 #: build/C/man2/wait4.2:159
11245 msgid ""
11246 "Including I<E<lt>sys/time.hE<gt>> is not required these days, but increases "
11247 "portability.  (Indeed, I<E<lt>sys/resource.hE<gt>> defines the I<rusage> "
11248 "structure with fields of type I<struct timeval> defined in "
11249 "I<E<lt>sys/time.hE<gt>>.)"
11250 msgstr ""
11251
11252 #. type: Plain text
11253 #: build/C/man2/wait4.2:165
11254 msgid ""
11255 "On Linux, B<wait3>()  is a library function implemented on top of the "
11256 "B<wait4>()  system call."
11257 msgstr ""
11258
11259 #. type: Plain text
11260 #: build/C/man2/wait4.2:172
11261 msgid ""
11262 "B<fork>(2), B<getrusage>(2), B<sigaction>(2), B<signal>(2), B<wait>(2), "
11263 "B<signal>(7)"
11264 msgstr ""