Skip to content

Commit 3454eb2

Browse files
committed
[reference/pcntl] sync with en.
1 parent 0097fdc commit 3454eb2

File tree

7 files changed

+642
-19
lines changed

7 files changed

+642
-19
lines changed

reference/pcntl/functions/pcntl-get-last-error.xml

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: b608b323883ac77489a31f8a1aa406e17c202bcb Maintainer: takagi Status: ready -->
3+
<!-- EN-Revision: 4ac5624be0dc8484a333514b605150e73cad06b8 Maintainer: takagi Status: ready -->
44

55
<refentry xml:id="function.pcntl-get-last-error" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
66
<refnamediv>
@@ -15,11 +15,11 @@
1515
<void />
1616
</methodsynopsis>
1717
<para>
18-
18+
pcntl 関数が直近に失敗した際に設定された
19+
エラー番号(<literal>errno</literal>) を取得します。
20+
エラー番号に関連付けられたシステムエラーメッセージは、
21+
<function>pcntl_strerror</function> を使うとチェックできます。
1922
</para>
20-
21-
&warn.undocumented.func;
22-
2323
</refsect1>
2424

2525
<refsect1 role="parameters">
@@ -30,10 +30,41 @@
3030
<refsect1 role="returnvalues">
3131
&reftitle.returnvalues;
3232
<para>
33-
エラーコードを返します。
33+
pcntl 関数が直近に失敗した際に設定された
34+
エラー番号(<literal>errno</literal>) を取得します。
35+
エラーがない場合は、0 を返します。
3436
</para>
3537
</refsect1>
3638

39+
<refsect1 role="examples">
40+
&reftitle.examples;
41+
<example>
42+
<title><function>pcntl_get_last_error</function> の例</title>
43+
<para>
44+
このサンプルは、子プロセスが存在しない状況で、子プロセスを待とうとします。
45+
それに対応するエラーメッセージを出力します。
46+
</para>
47+
<programlisting role="php">
48+
<![CDATA[
49+
<?php
50+
$pid = pcntl_wait($status);
51+
if ($pid === -1) {
52+
$errno = pcntl_get_last_error();
53+
$message = pcntl_strerror($errno);
54+
fwrite(STDERR, 'pcntl_wait failed with errno ' . $errno
55+
. ': ' . $message . PHP_EOL);
56+
}
57+
]]>
58+
</programlisting>
59+
&example.outputs.similar;
60+
<screen>
61+
<![CDATA[
62+
pcntl_wait failed with errno 10: No child processes
63+
]]>
64+
</screen>
65+
</example>
66+
</refsect1>
67+
3768
<refsect1 role="seealso">
3869
&reftitle.seealso;
3970
<simplelist>
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- $Revision$ -->
3+
<!-- EN-Revision: 262ca5a53247283e8e927a4a52367474e7f9838a Maintainer: mumumu Status: ready -->
4+
<refentry xml:id="function.pcntl-getcpuaffinity" xmlns="http://docbook.org/ns/docbook">
5+
<refnamediv>
6+
<refname>pcntl_getcpuaffinity</refname>
7+
<refpurpose>プロセスのCPUアフィニティを取得する</refpurpose>
8+
</refnamediv>
9+
10+
<refsect1 role="description">
11+
&reftitle.description;
12+
<methodsynopsis>
13+
<type class="union"><type>bool</type><type>array</type></type><methodname>pcntl_getcpuaffinity</methodname>
14+
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>pid</parameter><initializer>&null;</initializer></methodparam>
15+
</methodsynopsis>
16+
<simpara>
17+
<parameter>pid</parameter> のCPUアフィニティを取得します。
18+
</simpara>
19+
</refsect1>
20+
21+
<refsect1 role="parameters">
22+
&reftitle.parameters;
23+
<variablelist>
24+
<varlistentry>
25+
<term><parameter>pid</parameter></term>
26+
<listitem>
27+
<simpara>
28+
&null; を指定すると、現在のプロセスIDを使います。
29+
</simpara>
30+
</listitem>
31+
</varlistentry>
32+
</variablelist>
33+
</refsect1>
34+
35+
<refsect1 role="returnvalues">
36+
&reftitle.returnvalues;
37+
<simpara>
38+
プロセスのCPUアフィニティマスクを返します。
39+
&return.falseforfailure;
40+
</simpara>
41+
&return.falseproblem;
42+
</refsect1>
43+
44+
<refsect1 role="errors">
45+
&reftitle.errors;
46+
<simpara>
47+
<parameter>pid</parameter> が不正なプロセスIDであったり、
48+
CPUマスクを作るのに失敗した場合、<classname>ValueError</classname>
49+
がスローされます。
50+
</simpara>
51+
<simpara>
52+
<parameter>pid</parameter> が、
53+
現在のユーザーがパーミッションを持っていないプロセスだった場合、
54+
<constant>E_WARNING</constant> が発生します。
55+
</simpara>
56+
</refsect1>
57+
58+
<refsect1 role="seealso">
59+
&reftitle.seealso;
60+
<simplelist>
61+
<member><function>pcntl_setcpuaffinity</function></member>
62+
</simplelist>
63+
</refsect1>
64+
65+
</refentry>
66+
<!-- Keep this comment at the end of the file
67+
Local variables:
68+
mode: sgml
69+
sgml-omittag:t
70+
sgml-shorttag:t
71+
sgml-minimize-attributes:nil
72+
sgml-always-quote-attributes:t
73+
sgml-indent-step:1
74+
sgml-indent-data:t
75+
indent-tabs-mode:nil
76+
sgml-parent-document:nil
77+
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
78+
sgml-exposed-tags:nil
79+
sgml-local-catalogs:nil
80+
sgml-local-ecat-files:nil
81+
End:
82+
vim600: syn=xml fen fdm=syntax fdl=2 si
83+
vim: et tw=78 syn=sgml
84+
vi: ts=1 sw=1
85+
-->
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- $Revision$ -->
3+
<!-- EN-Revision: 1d45574f4de1ded9aeda80e18f6adfb9ca9db362 Maintainer: mumumu Status: ready -->
4+
<refentry xml:id="function.pcntl-setcpuaffinity" xmlns="http://docbook.org/ns/docbook">
5+
<refnamediv>
6+
<refname>pcntl_setcpuaffinity</refname>
7+
<refpurpose>プロセスのCPUアフィニティを設定する</refpurpose>
8+
</refnamediv>
9+
10+
<refsect1 role="description">
11+
&reftitle.description;
12+
<methodsynopsis>
13+
<type>bool</type><methodname>pcntl_setcpuaffinity</methodname>
14+
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>pid</parameter><initializer>&null;</initializer></methodparam>
15+
<methodparam choice="opt"><type>array</type><parameter>hmask</parameter></methodparam>
16+
</methodsynopsis>
17+
<simpara>
18+
<parameter>hmask</parameter> で指定した CPU アフィニティマスクを、
19+
<parameter>pid</parameter> の CPU アフィニティとして設定します。
20+
</simpara>
21+
</refsect1>
22+
23+
<refsect1 role="parameters">
24+
&reftitle.parameters;
25+
<variablelist>
26+
<varlistentry>
27+
<term><parameter>pid</parameter></term>
28+
<listitem>
29+
<simpara>
30+
&null; を指定すると、現在のプロセスIDを使います。
31+
</simpara>
32+
</listitem>
33+
</varlistentry>
34+
<varlistentry>
35+
<term><parameter>hmask</parameter></term>
36+
<listitem>
37+
<simpara>
38+
プロセスID に紐付いたひとつ以上のCPU ID からなる、CPUアフィニティマスク
39+
</simpara>
40+
</listitem>
41+
</varlistentry>
42+
</variablelist>
43+
</refsect1>
44+
45+
<refsect1 role="returnvalues">
46+
&reftitle.returnvalues;
47+
<simpara>
48+
&return.success;
49+
</simpara>
50+
&return.falseproblem;
51+
</refsect1>
52+
53+
<refsect1 role="errors">
54+
&reftitle.errors;
55+
<simpara>
56+
<parameter>hmask</parameter> から取得できる CPU ID が不正な場合、
57+
<classname>TypeError</classname> がスローされます。
58+
<parameter>pid</parameter> が不正なプロセスIDであったり、
59+
CPUマスクを作るのに失敗した場合、<classname>ValueError</classname>
60+
がスローされます。
61+
</simpara>
62+
</refsect1>
63+
64+
<refsect1 role="seealso">
65+
&reftitle.seealso;
66+
<simplelist>
67+
<member><function>pcntl_getcpuaffinity</function></member>
68+
</simplelist>
69+
</refsect1>
70+
71+
</refentry>
72+
<!-- Keep this comment at the end of the file
73+
Local variables:
74+
mode: sgml
75+
sgml-omittag:t
76+
sgml-shorttag:t
77+
sgml-minimize-attributes:nil
78+
sgml-always-quote-attributes:t
79+
sgml-indent-step:1
80+
sgml-indent-data:t
81+
indent-tabs-mode:nil
82+
sgml-parent-document:nil
83+
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
84+
sgml-exposed-tags:nil
85+
sgml-local-catalogs:nil
86+
sgml-local-ecat-files:nil
87+
End:
88+
vim600: syn=xml fen fdm=syntax fdl=2 si
89+
vim: et tw=78 syn=sgml
90+
vi: ts=1 sw=1
91+
-->

reference/pcntl/functions/pcntl-signal.xml

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: b890f28c0c6d2856eadcdc34b3faf83a846b3d79 Maintainer: takagi Status: ready -->
3+
<!-- EN-Revision: 5fe0f8494374d594762e56b2d769c2828b1e0ddb Maintainer: takagi Status: ready -->
44
<!-- CREDITS: hirokawa,mumumu -->
5-
<refentry xml:id="function.pcntl-signal" xmlns="http://docbook.org/ns/docbook">
5+
<refentry xml:id="function.pcntl-signal" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
66
<refnamediv>
77
<refname>pcntl_signal</refname>
88
<refpurpose>シグナルハンドラを設定する</refpurpose>
@@ -135,8 +135,7 @@
135135
<programlisting role="php">
136136
<![CDATA[
137137
<?php
138-
// tick を使用しなければなりません
139-
declare(ticks = 1);
138+
pcntl_async_signals(true);
140139
141140
// シグナルハンドラ関数
142141
function sig_handler($signo)
@@ -189,13 +188,31 @@ echo "終了\n";
189188
<para>
190189
<function>pcntl_signal</function> は、既存のシグナルハンドラがある場合にはそれを上書きします。
191190
</para>
191+
<refsect2>
192+
<title>ディスパッチする方法</title>
193+
<para>
194+
シグナルハンドラをディスパッチするには、複数の方法があります:
195+
<simplelist>
196+
<member><function>pcntl_async_signals</function> を有効にして非同期にディスパッチする方法。これがお勧めの方法です</member>
197+
<member><link linkend="control-structures.declare.ticks">tick</link> の頻度を設定する方法</member>
198+
<member><function>pcntl_signal_dispatch</function> を使って手動でディスパッチする方法</member>
199+
</simplelist>
200+
</para>
201+
<para>
202+
シグナルが非同期に、あるいは tick ベースの方法でディスパッチされた場合、
203+
<function>sleep</function> のようなブロッキング関数は中断される可能性があります。
204+
</para>
205+
</refsect2>
192206
</refsect1><!-- }}} -->
193207

194208
<refsect1 role="seealso">
195209
&reftitle.seealso;
196210
<para>
197211
<simplelist>
212+
<member><link xlink:href="https://en.wikipedia.org/wiki/Signal_(IPC)">Signal (IPC)</link> on Wikipedia</member>
213+
<member><function>pcntl_async_signals</function></member>
198214
<member><function>pcntl_fork</function></member>
215+
<member><function>pcntl_signal_dispatch</function></member>
199216
<member><function>pcntl_waitpid</function></member>
200217
</simplelist>
201218
</para>

reference/pcntl/functions/pcntl-strerror.xml

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: b890f28c0c6d2856eadcdc34b3faf83a846b3d79 Maintainer: takagi Status: ready -->
3+
<!-- EN-Revision: e7dcfdc34279798ad93592ca53978aef5d78996e Maintainer: takagi Status: ready -->
44
<refentry xml:id="function.pcntl-strerror" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
55
<refnamediv>
66
<refname>pcntl_strerror</refname>
@@ -14,11 +14,12 @@
1414
<methodparam><type>int</type><parameter>error_code</parameter></methodparam>
1515
</methodsynopsis>
1616
<para>
17-
17+
pcntl 関数が直近に失敗した際の、
18+
指定された <parameter>error_code</parameter>(<literal>errno</literal>)
19+
に関連付けられたシステムエラーメッセージを返します。
20+
<parameter>error_code</parameter> は、
21+
<function>pcntl_get_last_error</function> をコールすることで取得できます。
1822
</para>
19-
20-
&warn.undocumented.func;
21-
2223
</refsect1>
2324

2425
<refsect1 role="parameters">
@@ -28,7 +29,8 @@
2829
<term><parameter>error_code</parameter></term>
2930
<listitem>
3031
<para>
31-
32+
<function>pcntl_get_last_error</function> が返した
33+
エラー番号(<literal>errno</literal>)
3234
</para>
3335
</listitem>
3436
</varlistentry>
@@ -38,10 +40,39 @@
3840
<refsect1 role="returnvalues">
3941
&reftitle.returnvalues;
4042
<para>
41-
エラーの説明を返します
43+
エラーメッセージを文字列で返します
4244
</para>
4345
</refsect1>
4446

47+
<refsect1 role="examples">
48+
&reftitle.examples;
49+
<example>
50+
<title><function>pcntl_strerror</function> の例</title>
51+
<para>
52+
このサンプルは、子プロセスが存在しない状況で、子プロセスを待とうとします。
53+
それに対応するエラーメッセージを出力します。
54+
</para>
55+
<programlisting role="php">
56+
<![CDATA[
57+
<?php
58+
$pid = pcntl_wait($status);
59+
if ($pid === -1) {
60+
$errno = pcntl_get_last_error();
61+
$message = pcntl_strerror($errno);
62+
fwrite(STDERR, 'pcntl_wait failed with errno ' . $errno
63+
. ': ' . $message . PHP_EOL);
64+
}
65+
]]>
66+
</programlisting>
67+
&example.outputs.similar;
68+
<screen>
69+
<![CDATA[
70+
pcntl_wait failed with errno 10: No child processes
71+
]]>
72+
</screen>
73+
</example>
74+
</refsect1>
75+
4576
<refsect1 role="seealso">
4677
&reftitle.seealso;
4778
<simplelist>

0 commit comments

Comments
 (0)