关于exec命令函数

exec执行某命令在命令行下没有问题,但是在php中就出错。这个问题99.99%与权限有关,但是exec执行的命令不会返回错误。一个技巧就是使用管道命令,假设你的exec调用如下:

exec(‘convert a.jpg b.jpg‘, $output, $return_val);  

可以更改如下:

exec(‘convert a.jpg b.jpg 2>&1‘, $output, $return_val);
print_r($output);  

使用 2>&1, 命令就会输出shell执行时的错误到$output变量, 输出该变量即可分析。

备注: exec有3个参数,第一个是要执行的命令,第二个是参数是一个数组,数组的值是由第一个命令执行后生成的,第三个参数执行的状态,0表示成功,其他都表示失败。

在php里面一共有三个函数可以用来执行外部命令system,exec,passthru。

时间: 2024-07-29 08:34:33

关于exec命令函数的相关文章

进程控制(十)---exec族函数

当使用fork()创建了一个子进程后,通常接着会使用 exec 族函数指定新的程序来覆盖子进程的代码段.数据段.堆和栈.从而让子进程去执行一个新的程序,而不是执行父进程的副本. ===================================================== exec 族函数中总共有 6 个函数: 上面 5 个函数属于库函数,这些函数都最终调用了下面的 execve 函数,这6个函数中,只有execve 函数属于Linux的系统调用. 出错返回: 这些函数在调用成功时不

exec系列函数(execl,execlp,execle,execv,execvp)使用

本节目标: exec替换进程映像 exec关联函数组(execl.execlp.execle.execv.execvp) 一,exec替换进程映像 在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离.这样的好处是有更多的余地对两种操作进行管理. 当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行.当然,exec系列的函数也可以将当前进程替换掉. 例如:在shell命令行执行ps命令,实际上是shell进程调用fork复制一个新

Linux中exec命令相关

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两类:外部命令和内部命令.外部命令是通过系统调用或独立的程序实现的,如sed.awk等等.内部 命令是由特殊的文件格式(.def)所实现,如cd.history.exec等等. 在说明exe和source的区别之前,先说明一下fork的概念. fork是linux的系统调用,用来创建子进程(child

一起talk C栗子吧(第一百三十五回:C语言实例--exec系列函数一)

各位看官们,大家好,上一回中咱们说的是"创建线程时的内存细节"的例子,这一回咱们说的例子是:exec系列函数.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在前面介绍创建进程内存细节的章回中提到过exec系列函数,当时并没有做详细的介绍.今天我们将和大家一起看看exec系列函数. exec系列函数可以把某个进程导入到调用exec系列函数的进程中,并且把当前进程替换成一个新的进程,在前面的章回中我们也介绍了,执行exec系列函数会触发写时复制,因此新进程拥有自己的代码区

exec命令详解

exec: 在bash下输入man exec,找到exec命令解释处,可以看到有"No new process is created."这样的解释,这就是说exec命令不产生新的子进程.那么exec与source的区别是什么呢? exec命令在执行时会把当前的shell process关闭,然后换到后面的命令继续执行. 1. 系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变.因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容.原进

PHP执行命令函数

目标:简单的学习几个PHP中执行命令函数. 1.exec() 函数 参考地址:https://www.php.net/manual/zh/function.exec.php (PHP 4, PHP 5, PHP 7) exec — 执行一个外部程序 格式:exec ( string $command [, array &$output [, int &$return_var ]] ) : string 该函数可执行系统命令,命令执行结果的最后一行内容. 如果你需要获取未经处理的全部输出数据

Linux学习笔记(8)-exec族函数

昨天学习了Linux下的进程创建,创建一个进程的方法极为简单,只需要调用fork函数就可以创建出一个进程,但是-- 介绍fork()函数的时候提到,在创建进程后,子进程与父进程有相同的代码空间,执行的是和父进程完全一样的代码-- 那这样的话,我辛辛苦苦创建一个进程,还有什么意义? 辛辛苦苦的养大了一个儿子,难道就是为了让他走老子的老路? 带着满心的疑惑,我又进行了下一章的学习,突然恍然大悟,原来还有一个叫exec族函数的东西,专门就是用来给新创建的进程分配工作的. 调用exec族函数并不创建进程

exec命令

exec 命令实例 find . -name "*.cc" -exec grep -P -n -H --color=auto "[^\w]main[^\w]" {} \; -P  perl正则查找 -n  显示行号 -H 显示文件名 --color=auto  关键字高亮显示 [^\w]main[^\w]  main关键字前后不为字母数字下划线 exec命令,布布扣,bubuko.com

linux 下的 mkfifo、exec 命令使用

MKFIFOSection: User Commands (1)Updated: 1998年11月Index Return to Main Contents  NAME(名称)mkfifo - 创建FIFO(命名管道)  SYNOPSIS(总览)mkfifo [options] file... POSIX options(选项): [-m mode] GNU options(选项)(最短格式): [-m mode] [--help] [--version] [--]  DESCRIPTION(描