<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 下面这一段与文章内容无关,可以作为前置示例代码</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"这是文章前置内容示例\n"</span></span><span>;
</span><span><span class="hljs-variable">$time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"当前时间:<span class="hljs-subst">$time</span></span></span><span>\n";
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
<span class="hljs-comment">/*
标题: [pclose和popen怎么一起用?来看一个最基础的实战示例]
*/</span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"在 PHP 中,popen() 和 pclose() 函数常常用来执行系统命令并获取其输出。下面我们通过一个最基础的示例来说明它们的使用方法。\n\n"</span></span><span>;
</span><span><span class="hljs-comment">// 1. 使用 popen 打开一个进程</span></span><span>
</span><span><span class="hljs-comment">// 'r' 模式表示我们将从命令中读取输出</span></span><span>
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">popen</span></span><span>(</span><span><span class="hljs-string">"ls -l"</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>); </span><span><span class="hljs-comment">// 在 Windows 下可以改为 'dir'</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$handle</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"无法打开进程\n"</span></span><span>);
}
</span><span><span class="hljs-comment">// 2. 读取命令输出</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"命令输出如下:\n"</span></span><span>;
</span><span><span class="hljs-keyword">while</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">feof</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) {
</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$line</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span>;
}
}
</span><span><span class="hljs-comment">// 3. 使用 pclose 关闭进程并获取返回值</span></span><span>
</span><span><span class="hljs-variable">$return_value</span></span><span> = </span><span><span class="hljs-title function_ invoke__">pclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\n进程返回值:<span class="hljs-subst">$return_value</span></span></span><span>\n";
<span class="hljs-comment">/*
解析:
1. popen() 会启动一个子进程执行指定的命令,并返回一个文件句柄。
2. 通过 fgets() 或 fread() 可以逐行读取子进程的输出。
3. 结束读取后,必须使用 pclose() 关闭句柄,同时获取命令的退出状态。
4. 'r' 模式表示读取输出,'w' 模式表示向进程输入数据。
这个组合非常适合需要实时获取命令输出的场景。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
相关标签:
popen