hirokawa Thu Oct 4 09:57:46 2001 EDT
Added files:
/phpdoc/ja/functions pcntl.xml
Log:
added pcntl.xml in japanese manual.
Index: phpdoc/ja/functions/pcntl.xml
+++ phpdoc/ja/functions/pcntl.xml
<?xml encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
<reference id="ref.pcntl">
<title>プロセス制御関数</title>
<titleabbrev>PCNTL</titleabbrev>
<partintro>
<para>
PHPがサポートするプロセス制御関数は、UNIX形式のプロセス生成、プロ
セス実行、シグナル処理、プロセス終了機能を実装しています。
プロセス制御は、Webサーバ環境で有効にするべきではなく、プロセス制
御関数のどれかがWebサーバ環境で使用された場合には、予期しない結果
を生じる可能性があります。
</para>
<para>
この文書は、プロセス制御関数の一般的な使用法を説明しようとするもの
です。UNIXのプロセス制御に関する詳細な情報については、fork(2),
waitpid(2) and signal(2)のようなシステムのドキュメントや、
<citation>Advanced Programming in the UNIX Environment by
W. Richard Stevens (Addison-Wesley)</citation>のような優れた参考書
を読まれることを推奨します。
</para>
<para>
PHPがサポートするプロセス制御機能は、デフォルトでは有効となってい
ません。プロセス制御機能を有効にするには、PHPをコンパイルする際に
configure のオプションに <link
linkend="install.configure.enable-pcntl">--enable-pcntl</link>
を付ける必要があります。
</para>
<note>
<para>
現在、このモジュールは非UNIX環境(Windows)では動作しません。
</para>
</note>
<para>
以下のシグナルのリストは、プロセス制御関数でサポートされているもの
です。これらのシグナルのデフォルト動作の詳細については、
signal(7)
のマニュアルを参照下さい。
<table>
<title>サポートされるシグナル</title>
<tgroup cols="2">
<tbody>
<row>
<entry><literal>SIGFPE</literal></entry>
<entry><literal>SIGCONT</literal></entry>
<entry><literal>SIGKILL</literal></entry>
</row>
<row>
<entry><literal>SIGSTOP</literal></entry>
<entry><literal>SIGUSR1</literal></entry>
<entry><literal>SIGTSTP</literal></entry>
</row>
<row>
<entry><literal>SIGHUP</literal></entry>
<entry><literal>SIGUSR2</literal></entry>
<entry><literal>SIGTTIN</literal></entry>
</row>
<row>
<entry><literal>SIGINT</literal></entry>
<entry><literal>SIGSEGV</literal></entry>
<entry><literal>SIGTTOU</literal></entry>
</row>
<row>
<entry><literal>SIGQUIT</literal></entry>
<entry><literal>SIGPIPE</literal></entry>
<entry><literal>SIGURG</literal></entry>
</row>
<row>
<entry><literal>SIGILL</literal></entry>
<entry><literal>SIGALRM</literal></entry>
<entry><literal>SIGXCPU</literal></entry>
</row>
<row>
<entry><literal>SIGTRAP</literal></entry>
<entry><literal>SIGTERM</literal></entry>
<entry><literal>SIGXFSZ</literal></entry>
</row>
<row>
<entry><literal>SIGABRT</literal></entry>
<entry><literal>SIGSTKFLT</literal></entry>
<entry><literal>SIGVTALRM</literal></entry>
</row>
<row>
<entry><literal>SIGIOT</literal></entry>
<entry><literal>SIGCHLD</literal></entry>
<entry><literal>SIGPROF</literal></entry>
</row>
<row>
<entry><literal>SIGBUS</literal></entry>
<entry><literal>SIGCLD</literal></entry>
<entry><literal>SIGWINCH</literal></entry>
</row>
<row>
<entry><literal>SIGPOLL</literal></entry>
<entry><literal>SIGIO</literal></entry>
<entry><literal>SIGPWR</literal></entry>
</row>
<row>
<entry><literal>SIGSYS</literal></entry>
<entry><literal></literal></entry>
<entry><literal></literal></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<sect1 id="pcntl-example">
<title>プロセス制御の例</title>
<para>
この例は、シグナルハンドラを有するデーモンプロセスをフォークオフ
します。
</para>
<example>
<title>プロセス制御の例</title>
<programlisting role="php">
<?php
$pid = pcntl_fork();
if ($pid == -1) {
die("could not fork");
} else if ($pid) {
exit(); // 親プロセスの場合
} else {
// 子プロセスの場合
}
// 制御側の端末からデタッチ
if (!posix_setsid()) {
die("could not detach from terminal");
}
// シグナルハンドラを設定
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
// 無限ループでタスク実行
while(1) {
// 何か面白いことをここで行う
}
function sig_handler($signo) {
switch($signo) {
case SIGTERM:
// 終了タスクを処理
exit;
break;
case SIGHUP:
// 再起動タスクを処理
break;
default:
// その他の全てのシグナルを処理
}
}
?>
</programlisting>
</example>
</sect1>
</partintro>
<refentry id="function.pcntl-fork">
<refnamediv>
<refname>pcntl_fork</refname>
<refpurpose>現在実行中のプロセスをフォークする</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pcntl_fork</function></funcdef>
<void/>
</funcprototype>
</funcsynopsis>
<para>
<function>pcntl_fork</function> 関数は、親プロセスとそのPIDおよび
PPIDのみが異なる子プロセスを生成します。システム上でのフォークの
動作の具体的な詳細については、実行するシステムのfork(2)のマニュア
ルを参照下さい。
</para>
<para>
成功時に、子プロセスのPIDが親プロセスの実行スレッドに返され、子プ
ロセスの実行スレッドには0が返されます。失敗した場合、親プロセスの
コンテキストに-1が返され、子プロセスは生成されずに、PHPのエラーが
出力されます。
</para>
<example>
<title><function>pcntl_fork</function> の例</title>
<programlisting role="php">
<?php
$pid = pcntl_fork();
if ($pid == -1) {
die("could not fork");
} else if ($pid) {
// 親プロセスの場合
} else {
// 子プロセスの場合
}
?>
</programlisting>
</example>
<para>
<function>pcntl_waitpid</function>および
<function>pcntl_signal</function>も参照下さい。
</para>
</refsect1>
</refentry>
<refentry id="function.pcntl-signal">
<refnamediv>
<refname>pcntl_signal</refname>
<refpurpose>シグナルハンドラを設定する</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pcntl_signal</function></funcdef>
<paramdef>int <parameter>signo</parameter></paramdef>
<paramdef>mixed <parameter>handle</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
The <function>pcntl_signal</function> function installs a new
signal handler for the signal indicated by
<parameter>signo</parameter>. The signal handler is set to
<parameter>handler</parameter> which may be the name of a user
created function, or either of the two global constants SIG_IGN
or SIG_DFL.
</para>
<para>
<function>pcntl_signal</function> returns &true; on success or
&false; on failure.
</para>
<example>
<title><function>pcntl_signal</function> Example</title>
<programlisting role="php">
<?php
// signal handler function
function sig_handler($signo) {
switch($signo) {
case SIGTERM:
// handle shutdown tasks
exit;
break;
case SIGHUP:
// handle restart tasks
break;
case SIGUSR1:
print "Caught SIGUSR1...\n";
break;
default:
// handle all other signals
}
}
print "Installing signal handler...\n";
// setup signal handlers
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");
print "Generating signal SIGTERM to self...\n";
// send SIGUSR1 to current process id
posix_kill(posix_getpid(), SIGUSR1);
print "Done\n"
?>
</programlisting>
</example>
<para>
See also <function>pcntl_fork</function> and
<function>pcntl_waitpid</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pcntl-waitpid">
<refnamediv>
<refname>pcntl_waitpid</refname>
<refpurpose>待つかフォークした子プロセスのステータスを返す</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pcntl_waitpid</function></funcdef>
<paramdef>int <parameter>pid</parameter></paramdef>
<paramdef>int <parameter>status</parameter></paramdef>
<paramdef>int <parameter>options</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
The <function>pcntl_waitpid</function> function suspends execution
of the current process until a child as specified by the
<parameter>pid</parameter> argument has exited, or until a signal
is delivered whose action is to terminate the current process or
to call a signal handling function. If a child as requested by
<parameter>pid</parameter> has already exited by the time of the
call (a so-called "zombie" process), the function returns
immediately. Any system resources used by the child are
freed. Please see your system's waitpid(2) man page for specific
details as to how waitpid works on your system.
</para>
<para>
<function>pcntl_waitpid</function> returns the process ID of the
child which exited, -1 on error or zero if WNOHANG was used and no
child was available
</para>
<para>
The value of <parameter>pid</parameter> can be one of the following:
<table>
<title>possible values for <parameter>pid</parameter></title>
<tgroup cols="2">
<tbody>
<row>
<entry><literal>< -1</literal></entry>
<entry>
wait for any child process whose process group ID is equal to
the absolute value of <parameter>pid</parameter>.
</entry>
</row>
<row>
<entry><literal>-1</literal></entry>
<entry>
wait for any child process; this is the same behaviour that
the wait function exhibits.
</entry>
</row>
<row>
<entry><literal>0</literal></entry>
<entry>
wait for any child process whose process group ID is equal to
that of the calling process.
</entry>
</row>
<row>
<entry><literal>> 0</literal></entry>
<entry>
wait for the child whose process ID is equal to the value of
<parameter>pid</parameter>.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
<function>pcntl_waitpid</function> will store status information
in the <parameter>status</parameter> parameter which can be
evaluated using the following functions:
<function>pcntl_wifexited</function>,
<function>pcntl_wifstopped</function>,
<function>pcntl_wifsignaled</function>,
<function>pcntl_wexitstatus</function>,
<function>pcntl_wtermsig</function> and
<function>pcntl_wstopsig</function>.
</para>
<para>
The value of <parameter>options</parameter> is the value of zero
or more of the following two global constants
<literal>OR</literal>'ed together:
<table>
<title>possible values for <parameter>options</parameter></title>
<tgroup cols="2">
<tbody>
<row>
<entry><literal>WNOHANG</literal></entry>
<entry>
return immediately if no child has exited.
</entry>
</row>
<row>
<entry><literal>WUNTRACED</literal></entry>
<entry>
return for children which are stopped, and whose status has
not been reported.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
See also <function>pcntl_fork</function>,
<function>pcntl_signal</function>,
<function>pcntl_wifexited</function>,
<function>pcntl_wifstopped</function>,
<function>pcntl_wifsignaled</function>,
<function>pcntl_wexitstatus</function>,
<function>pcntl_wtermsig</function> and
<function>pcntl_wstopsig</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pcntl-wexitstatus">
<refnamediv>
<refname>pcntl_wexitstatus</refname>
<refpurpose>
終了した子プロセスのリターンコードを返す
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pcntl_wexitstatus</function></funcdef>
<paramdef>int <parameter>status</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the return code of a terminated child. This function is
only useful if <function>pcntl_wifexited</function> returned
&true;.
</para>
<para>
The parameter <parameter>status</parameter> is the status
parameter supplied to a successfull call to
<function>pcntl_waitpid</function>.
</para>
<para>
See also <function>pcntl_waitpid</function> and
<function>pcntl_wifexited</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pcntl-wifexited">
<refnamediv>
<refname>pcntl_wifexited</refname>
<refpurpose>
ステータスコードが正常終了を表す場合に &true; を返す
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pcntl_wifexited</function></funcdef>
<paramdef>int <parameter>status</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns &true; if the child status code represents a successful
exit.
</para>
<para>
The parameter <parameter>status</parameter> is the status
parameter supplied to a successfull call to
<function>pcntl_waitpid</function>.
</para>
<para>
See also <function>pcntl_waitpid</function> and
<function>pcntl_wexitstatus</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pcntl-wifsignaled">
<refnamediv>
<refname>pcntl_wifsignaled</refname>
<refpurpose>
ステータスコードがシグナルによる終了を表す場合に &true;
を返す
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pcntl_wifsignaled</function></funcdef>
<paramdef>int <parameter>status</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns &true; if the child process exited because of a signal
which was not caught.
</para>
<para>
The parameter <parameter>status</parameter> is the status
parameter supplied to a successfull call to
<function>pcntl_waitpid</function>.
</para>
<para>
See also <function>pcntl_waitpid</function> and
<function>pcntl_signal</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pcntl-wifstopped">
<refnamediv>
<refname>pcntl_wifstopped</refname>
<refpurpose>
子プロセスが現在停止している場合、&true; を返す
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pcntl_wifstopped</function></funcdef>
<paramdef>int <parameter>status</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns &true; if the child process which caused the return is
currently stopped; this is only possible if the call to
<function>pcntl_waitpid</function> was done using the option
<literal>WUNTRACED</literal>.
</para>
<para>
The parameter <parameter>status</parameter> is the status
parameter supplied to a successfull call to
<function>pcntl_waitpid</function>.
</para>
<para>
See also <function>pcntl_waitpid</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pcntl-wstopsig">
<refnamediv>
<refname>pcntl_wstopsig</refname>
<refpurpose>
子プロセスを停止させたシグナルを返す
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pcntl_wstopsig</function></funcdef>
<paramdef>int <parameter>status</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the number of the signal which caused the child to stop.
This function is only useful if
<function>pcntl_wifstopped</function> returned &true;.
</para>
<para>
The parameter <parameter>status</parameter> is the status
parameter supplied to a successfull call to
<function>pcntl_waitpid</function>.
</para>
<para>
See also <function>pcntl_waitpid</function> and
<function>pcntl_wifstopped</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pcntl-wtermsig">
<refnamediv>
<refname>pcntl_wtermsig</refname>
<refpurpose>
子プロセスの終了を生じたシグナルを返す
</refpurpose>
</refnamediv>
<refsect1>
<title>説明</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pcntl_wtermsig</function></funcdef>
<paramdef>int <parameter>status</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the number of the signal that caused the child process to
terminate. This function is only useful if
<function>pcntl_wifsignaled</function> returned &true;.
</para>
<para>
The parameter <parameter>status</parameter> is the status
parameter supplied to a successfull call to
<function>pcntl_waitpid</function>.
</para>
<para>
See also <function>pcntl_waitpid</function>,
<function>pcntl_signal</function> and
<function>pcntl_wifsignaled</function>.
</para>
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->