<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.fileprocess.process.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'zh',
  ),
  'this' => 
  array (
    0 => 'book.pcntl.php',
    1 => 'PCNTL',
    2 => '进程控制',
  ),
  'up' => 
  array (
    0 => 'refs.fileprocess.process.php',
    1 => '进程控制扩展',
  ),
  'prev' => 
  array (
    0 => 'function.expect-popen.php',
    1 => 'expect_popen',
  ),
  'next' => 
  array (
    0 => 'pcntl.setup.php',
    1 => '安装/配置',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'zh',
    'path' => 'reference/pcntl/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.pcntl.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.pcntl" class="book">
 
 <h1 class="title">进程控制</h1>
 
 
 
 <div id="intro.pcntl" class="preface">
  <h1 class="title">简介</h1>
  <p class="para">
   PHP 的进程控制支持实现了 Unix 方式的进程创建, 程序执行, 信号处理以及进程的中断。进程控制不能被应用在
   Web 服务器环境，当其被用于 Web 服务环境时可能会带来意外的结果。
  </p>
  <p class="para">
   这份文档用于阐述每个进程控制函数的通常用法。关于 Unix 进程控制的更多信息建议查阅系统文档中关于
   fork（2）、waitpid（2）、signal（2）等的部分或更全面的参考资料比如《Unix
   环境高级编程》（作者：W. Richard Stevens、Addison-Wesley 出版）。
  </p>
  <p class="para">
   PCNTL 现在使用了 ticks 作为信号处理的回调机制，ticks 在速度上远远超过了之前的处理机制。这个变化与“用户
   ticks”遵循了相同的语义。您可以使用 <span class="function"><strong>declare()</strong></span>
   语句在程序中指定允许发生回调的位置。这使得我们对异步事件处理的开销最小化。在编译 PHP 时启用
   pcntl 将始终承担这种开销，不论脚本中是否真正使用了 pcntl。
  </p>

  <blockquote class="note"><p><strong class="note">注意</strong>: <span class="simpara">此扩展在 Windows 平台上不可用。</span></p></blockquote>
 </div>
 

 








 





 









 




 








<ul class="chunklist chunklist_book"><li><a href="pcntl.setup.php">安装/配置</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="pcntl.installation.php">安装</a></li></ul></li><li><a href="pcntl.constants.php">预定义常量</a></li><li><a href="pcntl.examples.php">示例</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="pcntl.example.php">基本用法</a></li></ul></li><li><a href="enum.pcntl-qosclass.php">Pcntl\QosClass</a> — The Pcntl\QosClass Enum</li><li><a href="ref.pcntl.php">PCNTL 函数</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="function.pcntl-alarm.php">pcntl_alarm</a> — 为进程设置 alarm 闹钟信号</li><li><a href="function.pcntl-async-signals.php">pcntl_async_signals</a> — Enable/disable asynchronous signal handling or return the old setting</li><li><a href="function.pcntl-errno.php">pcntl_errno</a> — 别名 pcntl_get_last_error</li><li><a href="function.pcntl-exec.php">pcntl_exec</a> — 在当前进程空间执行指定程序</li><li><a href="function.pcntl-fork.php">pcntl_fork</a> — 在当前进程当前位置产生分叉（fork）</li><li><a href="function.pcntl-get-last-error.php">pcntl_get_last_error</a> — Retrieve the error number set by the last pcntl function which failed</li><li><a href="function.pcntl-getcpuaffinity.php">pcntl_getcpuaffinity</a> — Get the cpu affinity of a process</li><li><a href="function.pcntl-getpriority.php">pcntl_getpriority</a> — 获取任意进程的优先级</li><li><a href="function.pcntl-getqos-class.php">pcntl_getqos_class</a> — Get the QoS class of the current thread</li><li><a href="function.pcntl-rfork.php">pcntl_rfork</a> — Manipulates process resources</li><li><a href="function.pcntl-setcpuaffinity.php">pcntl_setcpuaffinity</a> — Set the cpu affinity of a process</li><li><a href="function.pcntl-setpriority.php">pcntl_setpriority</a> — 修改任意进程的优先级</li><li><a href="function.pcntl-setqos-class.php">pcntl_setqos_class</a> — Set the QoS class of the current thread</li><li><a href="function.pcntl-signal.php">pcntl_signal</a> — 安装信号处理程序</li><li><a href="function.pcntl-signal-dispatch.php">pcntl_signal_dispatch</a> — 调用等待信号的处理程序</li><li><a href="function.pcntl-signal-get-handler.php">pcntl_signal_get_handler</a> — Get the current handler for specified signal</li><li><a href="function.pcntl-sigprocmask.php">pcntl_sigprocmask</a> — 设置或检索阻塞信号</li><li><a href="function.pcntl-sigtimedwait.php">pcntl_sigtimedwait</a> — 带超时机制的信号等待</li><li><a href="function.pcntl-sigwaitinfo.php">pcntl_sigwaitinfo</a> — 等待信号</li><li><a href="function.pcntl-strerror.php">pcntl_strerror</a> — Retrieve the system error message associated with the given errno</li><li><a href="function.pcntl-unshare.php">pcntl_unshare</a> — Dissociates parts of the process execution context</li><li><a href="function.pcntl-wait.php">pcntl_wait</a> — 等待或返回 fork 的子进程状态</li><li><a href="function.pcntl-waitid.php">pcntl_waitid</a> — 等待子进程改变状态</li><li><a href="function.pcntl-waitpid.php">pcntl_waitpid</a> — 等待或返回 fork 的子进程状态</li><li><a href="function.pcntl-wexitstatus.php">pcntl_wexitstatus</a> — 返回一个中断的子进程的返回代码</li><li><a href="function.pcntl-wifexited.php">pcntl_wifexited</a> — 检查状态代码是否代表一个正常的退出</li><li><a href="function.pcntl-wifsignaled.php">pcntl_wifsignaled</a> — 检查子进程状态码是否代表由于某个信号而中断</li><li><a href="function.pcntl-wifstopped.php">pcntl_wifstopped</a> — 检查子进程当前是否已经停止</li><li><a href="function.pcntl-wstopsig.php">pcntl_wstopsig</a> — 返回导致子进程停止的信号</li><li><a href="function.pcntl-wtermsig.php">pcntl_wtermsig</a> — 返回导致子进程中断的信号</li></ul></li></ul></div><?php manual_footer($setup); ?>