This commit is contained in:
fofolee
2019-04-08 23:22:26 +08:00
commit 7ca94f1141
5960 changed files with 530244 additions and 0 deletions

75
docs/php/pcntl_fork.html Normal file
View File

@@ -0,0 +1,75 @@
<!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>