php的循环,php popen和system有什么区别?

用户投稿 139 0

关于“php_popen_循环”的问题,小编就整理了【2】个相关介绍“php_popen_循环”的解答:

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中用dowhile求1到100的奇数和?

用dowhile做循环体是最基本的应用,这个题目的考察点应该就是在“奇数”上面,那么只要注意用于控制循环次数的变量,每次不是加1,而是加2,就解决了。

<?php $i=1;

$sum=0;

do{ $sum+=$i; $i=$i+2; }

while ($i<=100);

echo $sum; ?>

到此,以上就是小编对于“php_popen_循环”的问题就介绍到这了,希望介绍关于“php_popen_循环”的【2】点解答对大家有用。

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