首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行后台外部程序

问执行后台外部程序
EN

Stack Overflow用户
提问于 2020-09-20 23:22:46
回答 1查看 49关注 0票数 0

如果我有这样的剧本:

代码语言:javascript
复制
<?php
system('notepad');
echo "END\n";

它打开记事本程序,但脚本停止,直到记事本结束。我想在后台打开这个程序。我试过这个:

代码语言:javascript
复制
system('notepad &');

但是,这个过程继续阻止脚本。我认为这是因为我的外壳是PowerShell,而不是Bash或类似的。这有可能做到吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-21 00:52:20

作为解决办法,您可以使用proc_open

代码语言:javascript
复制
<?php
$a_desc = [];
$a_pipe = [];
$r = proc_open('notepad', $a_desc, $a_pipe);
echo "END\n";
proc_close($r);

当您使用proc_open时,只有在调用proc_close时,PHP才会等待进程终止。因此,在上面的脚本中,END将继续进行打印,但脚本在此之后仍将挂起。如果您想完全忘记这个过程,可以省略proc_close

代码语言:javascript
复制
<?php
$a_desc = [];
$a_pipe = [];
proc_open('notepad', $a_desc, $a_pipe);
echo "END\n";

通常,您希望调用proc_close,就好像您的外部命令生成输出一样,那么该输出可能会在您拥有的任何内部echo语句之后打印。

https://php.net/function.proc-close

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63984534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档