小编leo*_*eoj的帖子

使用PHP的proc_open + bypass_shell在后台运行可执行文件并检索正确的PID?

因此,在PHP在Windows上:是否有可能都在后台运行的可执行文件检索它的PID?我已经推断出可以单独完成这两项任务,但不能同时完成.

背景过程

要对通过SHELL启动的进程进行后台处理,'start /B "bg" myprog.exe'必须使用该命令,并且必须立即关闭SHELL进程.

要做到这一点,许多人都这样使用pclose( popen( ... ) ),pclose( popen( 'start /B "bg" myprog.exe', 'r') );但据我所知,pid使用popen时无法检索.

因为pid使用popen 是不可能的,所以我们必须看看proc_open.

获得PID

使用proc_open我们可以检索exe的pid当且仅当if bypass_shell设置为true.

如果bypass_shell设置为false(默认值),Windows将返回pidSHELL的内容.有关详细信息,请参阅:https://bugs.php.net/bug.php?id = 41052

问题解释

start /B传递给proc_open时,当命令失败bypass_shell = true,因为它跳过了SHELL和发送命令行参数直接MYPROG.EXE不知道他们做什么.

相反,如果bypass_shell = false(默认)和proc_close用于立即关闭SHELL,myprog.exe在后台运行就像使用pclose( popen( ... ) )BUT 时返回错误 pid(我们得到pid了SHELL).

那么,背景+正确的pid检索是否可行? …

php windows background pid proc-open

6
推荐指数
1
解决办法
3326
查看次数

无法继续git rebase

这是我尝试过的.希望有人有时间看看这个并提出一些建议.谢谢!

编辑:我相信我已经回答了我自己的问题:https://stackoverflow.com/a/12760672/906794

git

5
推荐指数
1
解决办法
3880
查看次数

标签 统计

background ×1

git ×1

php ×1

pid ×1

proc-open ×1

windows ×1