如果我有这样的剧本:
<?php
system('notepad');
echo "END\n";它打开记事本程序,但脚本停止,直到记事本结束。我想在后台打开这个程序。我试过这个:
system('notepad &');但是,这个过程继续阻止脚本。我认为这是因为我的外壳是PowerShell,而不是Bash或类似的。这有可能做到吗?
发布于 2020-09-21 00:52:20
作为解决办法,您可以使用proc_open
<?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
<?php
$a_desc = [];
$a_pipe = [];
proc_open('notepad', $a_desc, $a_pipe);
echo "END\n";通常,您希望调用proc_close,就好像您的外部命令生成输出一样,那么该输出可能会在您拥有的任何内部echo语句之后打印。
https://stackoverflow.com/questions/63984534
复制相似问题