📅  最后修改于: 2023-12-03 15:03:34.918000             🧑  作者: Mango
在PHP中,我们可以使用exec()
函数来运行一个外部程序,并获取它的输出结果。而有时候,我们需要获取被运行的外部程序的进程ID,以便后续执相关操作,比如杀死进程等。本文将介绍如何使用exec()
函数获取运行程序的进程ID。
我们可以在exec()
函数中加入echo $!
来获取进程ID。
下面是一个例子,假设我们要运行一个命令sleep 10
:
$output = array();
exec('sleep 10 > /dev/null 2>&1 & echo $!', $output);
$pid = (int)$output[0];
echo "Process ID: " . $pid;
这段代码中,我们先定义了一个空数组$output
,然后在调用exec()
函数时,将命令字符串作为第一个参数传入,第二个参数是输出结果的数组。我们在命令串中加入了> /dev/null 2>&1 & echo $!
,意思是将输出重定向到空设备,并且在后台运行程序,并打印进程ID。
最后,我们将进程ID转换为整型并输出。如果命令串中没有进程ID的输出,那么$output
数组会是空数组,这时需要加一些判断来避免错误。
使用exec()
函数获取进程ID是一个相对简单的任务,只需要在命令串中加入echo $!
即可。但需要注意的是,不同的系统返回的结果有可能会有不同的格式,需要针对不同的系统来解析。