system()函数与exec组函数
在linux下:
system()函数
功能:
执行一个系统命令(执行shell 命令)。
执行流程:
1.fork一个子进程; 2.在子进程中调用exec函数去执行command; 3.在父进程中调用wait去等待子进程结束。 返回值: 如果fork()失败 返回-1:出现错误 如果exec()失败,表示不能执行Shell,返回值相当于Shell执行了exit(127) 如果执行成功则返回子Shell的终止状态 如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),仅当命令处理程序可用时,返回非 零值,可以通过这一特征判断在一个给定的操作系统上是否支持system函数(当system函数返回值为0时,表明system函数无效,在UNIX系统 中, system函数总是可用的);。如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为 system()调 用/bin/sh 失败所返回的127,因此最好能再检查errno 来确认执行成功。 与exec的区别 1、system()和exec()都可以执行进程外的命令,system是在原进程上开辟了一个新的进程,但是exec是用新进程(命令)覆盖了原有的进程 (exec执行新进程,原有进程不再执行,即原有进程下面语句不会执行(未经测试)) 2、system()和exec()都有能产生返回值,system的返回值并不影响原有进程,但是exec的返回值影响了原进程