2012-05-15 71 views
3

我试图找到我从php网页制作的后台系统调用的PID。如果我从PHP脚本中调用'ps -A'并将其打印到浏览器中,则它不具有与从终端调用'ps -A'相同的输出。这是特别令人沮丧的,因为我可以看到PHP从我的终端调用的后台进程的PID,但不能从PHP中调用。PHP获取系统()命令的PID

换句话说,我的代码看起来是这样的:

system("process &"); 
system("ps -A"); 

但是,这并不产生相同的输出作为调用来自终端“PS -A”。不仅如此,'流程'显示在终端中,而不是来自PHP调用。

有人可以向我解释为什么这是,我怎么能从我的PHP代码中获得'process'的PID? (为了记录,我也尝试过使用代码的变体,包括使用exec()和passthru(),其中没有一个已经工作到目前为止。)

谢谢。

+0

一种选择是使用[proc_open和proc_get_status(http://stackoverflow.com/a/4731666/82769) –

回答

2
echo $! 

将获得最后一个命令的PID,所以..

system("process & echo $!"); 
+0

这个建议听起来像是可行的,但事实并非如此。相反,它开始打印一个错误,它无法打开它应该打开的文件('process'从文件获取输入并将输出重定向到文件中)。我的其他任何尝试都没有产生这个错误。 – MattS

+0

好,如果它有争议,你通过它们吗?只需用“echo $!”替换第二个系统调用即可并像以前一样离开第一个 – miki

+0

我没有通过参数。我只是尝试单独调用它们(现在它是exec(“进程&"); system(”echo $!“)),并且没有任何内容从系统(回显)调用中打印出来。为什么会这样? – MattS