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 -->