PHP执行流程,php popen和system有什么区别?

用户投稿 38 0

关于“php执行system”的问题,小编就整理了【3】个相关介绍“php执行system”的解答:

php popen和system有什么区别?

函数popen()和system()是PHP中执行外部命令的两个常用函数。它们之间的主要区别如下:

1. 返回值:popen()函数返回一个指向打开管道的文件指针,可以用于读取外部命令的输出。而system()函数则直接返回命令执行的结果或者执行成功与否的状态。

2. 输出处理:popen()函数可以读取外部命令的输出,因为它返回一个文件指针。因此,你可以使用fgets()或fread()等函数来读取命令的输出内容。而system()函数则直接将命令的输出发送到标准输出(通常是控制台),你也可以通过类似于重定向输出的方式将其保存到文件。

3. 使用场景:popen()函数主要用于在PHP中执行外部命令,并读取其输出。它适合用于需要与外部命令进行交互的情况,比如调用外部工具并获取其输出结果。而system()函数适用于简单的执行命令并直接获取执行结果的场景,比如执行一些简单的系统命令。

需要注意的是,popen()和system()函数都会执行外部命令,因此在使用时要注意安全性,尽量避免执行不受信任的命令或使用用户提供的输入作为命令参数,以防止潜在的安全风险。

. 使用方式不同。POPEN可以让用户通过标准输入/输出与被执行的命令进行通信,而system只能用于执行命令并等待其完成1。

2. 阻塞性不同。POPEN本身是不阻塞的,要通过标准I/O的读取使它阻塞;而system则会先后调用fork、exec和waitpid来执行外部命令,并在子进程运行完毕后继续向下执行2。

3. 返回值不同。POPEN返回一个标准的io文件指针,而system则会一直等待子进程运行完毕后返回结果2。

php的system函数的返回值代表什么啊?

system执行的是你指定的系统可执行程序。所以,成功情况下返回的是你的函数程序执行的结果,不成功的时候返回的是false.所以你数0的时候成功?有点奇怪。

php调用system或exec怎样立即返回?

$WshShell = new COM("WScript.Shell"); $oExec = $WshShell->Run("notepad.exe", 7, false); 或者 if (substr(php_uname(), 0, 7) == "Windows"){ pclose(popen("start /B ". $cmd, "r")); } else { exec($cmd . " > /dev/null &"); }

到此,以上就是小编对于“php执行system”的问题就介绍到这了,希望介绍关于“php执行system”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!