基于unix的系统中命令exec(const char * c)和system(const char * c)之间的区别是什么?
可以从C程序调用两者来执行系统调用。这两个是否存在差异?
答案 0 :(得分:8)
exec
用指定的程序替换您的进程。您的程序已完成,无法继续运行。
spawn
启动一个新进程(可能首先使用fork
),并在程序继续执行时运行指定的程序。
system
启动一个新进程(可能首先使用fork
),并在程序等待时运行指定的程序。一旦孩子退出,你的课程就会继续。
答案 1 :(得分:1)
exec
将执行一个文件,而system
将执行一个shell并使用参数提供它。
来自维基百科:
它(系统)与exec / spawn系列函数的不同之处在于,不是将参数传递给执行对象,而是将单个字符串传递给系统shell,通常是POSIX shell,/ bin / sh -c。 / p>
http://en.wikipedia.org/wiki/System_%28C_standard_library%29