uTools-Manuals/docs/php/pcntl_fork.html
2019-04-08 23:22:26 +08:00

75 lines
4.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>在当前进程当前位置产生分支子进程。译注fork是创建了一个子进程父进程和子进程
都从fork的位置开始向下继续执行不同的是父进程执行过程中得到的fork返回值为子进程
而子进程得到的是0。</title>
</head>
<body class="docs"> </ul>
</div>
<div id="layout">
<div id="layout-content"><div id="function.pcntl-fork" class="refentry">
<div class="refnamediv">
<h1 class="refname">pcntl_fork</h1>
<p class="verinfo">(PHP 4 &gt;= 4.1.0, PHP 5, PHP 7)</p><p class="refpurpose"><span class="refname">pcntl_fork</span> &mdash; <span class="dc-title">
在当前进程当前位置产生分支子进程。译注fork是创建了一个子进程父进程和子进程
都从fork的位置开始向下继续执行不同的是父进程执行过程中得到的fork返回值为子进程
而子进程得到的是0。
</span></p>
</div>
<div class="refsect1 description" id="refsect1-function.pcntl-fork-description">
<h3 class="title">说明</h3>
<div class="methodsynopsis dc-description">
<span class="methodname"><strong>pcntl_fork</strong></span>
( <span class="methodparam">void</span>
) : <span class="type">int</span></div>
<p class="para rdfs-comment">
<span class="function"><strong>pcntl_fork()</strong></span>函数创建一个子进程这个子进程仅PID进程号
和PPID父进程号与其父进程不同。fork怎样在您的系统工作的详细信息请查阅您的系统
的fork2手册。
</p>
</div>
<div class="refsect1 returnvalues" id="refsect1-function.pcntl-fork-returnvalues">
<h3 class="title">返回值</h3>
<p class="para">
成功时在父进程执行线程内返回产生的子进程的PID在子进程执行线程内返回0。失败时
父进程上下文返回-1不会创建子进程并且会引发一个PHP错误。
</p>
</div>
<div class="refsect1 examples" id="refsect1-function.pcntl-fork-examples">
<h3 class="title">范例</h3>
<p class="para">
<div class="example" id="example-4325">
<p><strong>Example #1 <span class="function"><strong>pcntl_fork()</strong></span> 示例</strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br />$pid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">pcntl_fork</span><span style="color: #007700">();<br /></span><span style="color: #FF8000">//父进程和子进程都会执行下面代码<br /></span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$pid&nbsp;</span><span style="color: #007700">==&nbsp;-</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//错误处理:创建子进程失败时返回-1.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">die(</span><span style="color: #DD0000">'could&nbsp;not&nbsp;fork'</span><span style="color: #007700">);<br />}&nbsp;else&nbsp;if&nbsp;(</span><span style="color: #0000BB">$pid</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//父进程会得到子进程号,所以这里是父进程执行的逻辑<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">pcntl_wait</span><span style="color: #007700">(</span><span style="color: #0000BB">$status</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//等待子进程中断,防止子进程成为僵尸进程。<br /></span><span style="color: #007700">}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//子进程得到的$pid为0,&nbsp;所以这里是子进程执行的逻辑。<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
</div>
</p>
</div>
<div class="refsect1 seealso" id="refsect1-function.pcntl-fork-seealso">
<h3 class="title">参见</h3>
<p class="para">
<ul class="simplelist">
<li class="member"><span class="function"><a href="pcntl_waitpid.html" class="function" rel="rdfs-seeAlso">pcntl_waitpid()</a> - 等待或返回fork的子进程状态</span></li>
<li class="member"><span class="function"><a href="pcntl_signal.html" class="function" rel="rdfs-seeAlso">pcntl_signal()</a> - 安装一个信号处理器</span></li>
</ul>
</p>
</div>
</div></div></div></body></html>