php方法返回值,php popen和system有什么区别?

用户投稿 35 0

关于“php方法_返回值”的问题,小编就整理了【2】个相关介绍“php方法_返回值”的解答:

php popen和system有什么区别?

popen和system都可以执行外部命令。 popen相当于是先创建一个管道,fork,关闭管道的一端,执行exec,返回一个标准的io文件指针。 system相当于是先后调用了fork, exec,waitpid来执行外部命令 popen本身是不阻塞的,要通过标准io的读取使它阻塞 system本身就是阻塞的。 最近写的程序,要求进程在调用的外部命令运行完毕之后,再继续 向下进行。 一开始调用的popen,然后只是用了fgetc,使其阻塞,但是总是阻塞不了。原因就是如果外部命令有很多的输出内容,那fgets在得到输出的第一个字符的时候就返回了,不在阻塞了;调用fread,如果size和nitems设置的不够大,也是一样的问题。比如外部命令要输出100个字符,结果size是sizeof(char),nitems是10,那么当fread读到地10个字符的时候,就已经满足条件了,就返回了。 正确的方法是调用system,因为system最后会调用waitpid,来等待子进程运行完毕。

在PHP中,`popen`和`system`是用于执行外部命令的函数,它们之间有以下区别:

1. 功能不同:

   - `popen`函数打开一个管道,用于执行外部命令并建立与其输入或输出流的联系。

   - `system`函数执行指定的外部命令,并将结果直接输出到标准输出。

2. 返回值不同:

   - `popen`函数返回一个文件指针,你可以使用该指针从外部命令的输出流中读取数据或向其输入流写入数据。

   - `system`函数在执行外部命令后返回命令的退出状态码。通常,成功执行返回0,而失败返回其他非零值。

3. 使用方式不同:

   - `popen`函数通常与`fread`、`fwrite`等函数一起使用,用于读取或写入外部命令的输入或输出流。

   - `system`函数直接执行指定的命令,并将结果直接输出到标准输出。

综上所述,`popen`函数用于打开管道并执行外部命令,并通过文件指针进行输入和输出的操作。而 `system`函数则直接执行外部命令并返回执行结果。你可以根据具体需求选择使用哪个函数。

php中return与return false区别?能举个项目常用的例子吗?

return表示退出执行,即结束一个函数的执行,这个时候事实上可以理解返回的是空值(void),如果你了解java的话就很清楚了,在java里面,如果一个函数没有返回值,那么返回的就是void。但是php是弱类型语言,并没有强制限定,也没有提供void关键字,且定义的函数可以返回多中类型的值。

return false就简单了,返回的是一个boolean结果,通常用于进行一些判断。当然,如果返回值你并没有使用,return void的时候你也可以使用return false,即,如果一个函数只是执行一些操作,但是你并不需要返回的结果,直接使用return和return false、return true都是可以的,这个时候其实重点在return上,用于结束函数的执行。

到此,以上就是小编对于“php方法_返回值”的问题就介绍到这了,希望介绍关于“php方法_返回值”的【2】点解答对大家有用。

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