PHP:exec与system区别

在PHP中调用外部命令,可以用exec 及 system来实现:

system() 
原型:string system (string command [, int return_var]) 
system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码。

返回结果

成功返回0,   
        失败(命令不存在等原因)   返回   非0值

exec() 
原型:string exec (string command [, string array [, int return_var]]) 
exec ()函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array 可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二 个参数时,才可以用第三个参数,用来取得命令执行的状态码。 
例子: 
exec("/bin/ls -l"); 
exec("/bin/ls -l", $res); 
exec("/bin/ls -l", $res, $rc);

时间: 2024-10-24 12:24:01

PHP:exec与system区别的相关文章

转 PHP中exec、system等函数调用linux命令问题

PHP中exec.system等函数调用linux命令问题 先小说两句:今天研究了下PHP调用LINUX命令的功能,一开始怎么做都调用不成功,试了好久才终于成功了,所以发出来分享一下.下面我将详细介绍: PHP中提供了几个调用linux命令的函数,exec.system.passthru,函数使用请参考手册,这里不具体介绍.下面我以exec函数为例具体介绍: 比如LINUX中修改服务器时间命令是 /bin/date -s '2010-05-28 13:10',我们通过php函数exec调用这个命

PHP在Linux下Apache环境中执行exec,system,passthru等服务器命令函数

若在服务器中使用php test.php运行exec,system,passthru等命令相关的脚本能成功运行,在web页面却没反应,则 查看下apache的error_log日志,一般是这几个函数 system() has been disabled for security reasons in /var/www/html/test.php on line 34 报错了. 看下php.ini中的disable_functions 有没有禁用了这些函数,删除禁用后保存. 重启下php和Apac

fork+exec 与system,popen区别

1.fork + exec fork用来创建一个子进程.一个程序一调用fork函数,系统就为一个新的进程准备了前述三个段,首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,虽然它继承了父进程的一切数据,但实际上数据却已经分开,相互之间不再有影响了,也就是说,它们之间不再共享任何数据了.而如果两个进程要共享什么数据的话,就要使用另一套函数(shmget,shmat

第6章 进程控制(3)_wait、exec和system函数

5. 等待函数 (1)wait和waitpid 头文件 #include <sys/types.h> #include <sys/wait.h> 函数 pid_t wait(int* status); pid_t waitpid(pid_t pid, int* status, int options); 返回值 成功返回子进程ID,出错返回-1 功能 等待子进程退出并回收,防止僵尸进程的产生 参数 (1)status参数: ①为空时,代表任意状态结束的子进程: ②不为空时,则等待指

一、进程与信号之exec函数system函数

exec函数: 子进程调用exec函数执行另一个程序,exec函数进程完全由新程序代替,替换原有程序正文,数据,堆,栈段 #include <unistd.h> extern char **environ; int execl(const char *path,const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path,const char *arg

exec(), passthru(), system() etc.

<?php echo '<pre>'; exec('ls -la', $result); print_r($result); echo '<hr/>'; $result = passthru('ls -la'); echo '<hr/>'; $result = system('ls -la'); echo '<hr/>'; echo $result = `ls -la`; echo '<hr/>'; print_r(getenv('HTTP

fork exec source的区别

参考:http://www.cnblogs.com/bkygg/p/5023072.html 1:fork  运行的时候开一个sub_shell 执行调用的脚本,sub_shell执行的时候,parent_shell还在.sub_shell执行完毕后返回parent_shell.sub_shell从parent_shell继承环境变量.但是sub_shell中的变量不会带回parent_shell.在子命令执行完后再执行父命令,子级的环境变量不会影响到父级 2:exec 执行子级的命令后,不再执

正则中关于修饰符g以及exec和match区别的一个小demo

代码: 输出结果 补充: reg.lastIndex:下一次正则捕获的开始查找的索引位置 ->正则的懒惰性就是因为默认情况下lastIndex值都是0,我们不管执行几次exec,都是从字符串的开始位置查找,那么每一次捕获到的都是第一个符合的内容

exec与xargs区别

没有哪个更好哪个更不好 复习一下 exec是对每个找到的文件执行一次命令,除非这单个的文件名超过了几k,否则不会出现命令行超长出报错的问题. 而xargs是把所有找到的文件名一股脑的转给命令.当文件很多时,这些文件名组合成的命令行参数很容易超长,导致命令出错. find | xargs 这种组合在处理有空格字符的文件名时也会出错,因为这时执行的命令已经不知道哪些是分割符.哪些是文件名中的空格! 而用exec则不会有这个问题. $touch test/'test zzh' $find test/