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">
&lt;?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">
&lt;?php

$pid = pcntl_fork();
if ($pid == -1) {
     die("could not fork");
} else if ($pid) {
     // 親プロセスの場合
} else {
     // 子プロセスの場合
}

?&gt;
     </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">
&lt;?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"

?&gt;
     </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>&lt; -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>&gt; 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
-->

Reply via email to