如何让 Symfony 启动进程 PID?

How to get process PID started by Symfony?

如何获取 Symfony 启动的进程的 PID? 代码如下

$process = new \Symfony\Component\Process\Process('vlc');
$process->start();
return $process->getPid();

returns PID 1488。但系统中没有具有相同 PID 的进程(没有 vlc,没有 php)。

编辑

提供的代码在 app/console (Symfony\Component\Console\Command\Command)

中运行

进程分叉

进程单独产生 UI 并让启动进程正常结束的可能性不大,即

----> vlc (1488) ---> EOL
       |
       +--> vlc-ui (??) ---> Application

此行为可以通过 运行 应用程序从命令行观察到,并几乎立即检查提示是否 returns。

挂断信号

另请注意,当父进程退出(您的脚本)时,子进程也可以通过监听 SIGHUP 信号来选择退出。如果您还没有这样做,您可以在调查时通过添加 sleep() 语句来让您的脚本“存活”更长时间。

另一种在某些情况下可能有效的方法是像脚本一样反向执行它以 grep 解析包含所需进程的 'ps -A'(例如 PHP)并从结果中提取 PID。您无法控制结果集上的 "who's who" 但实际上可以控制 "who's" 运行.