在unix中区分b / w exec()和system()

时间:2011-09-12 04:54:02

标签: c unix system exec

基于unix的系统中命令exec(const char * c)和system(const char * c)之间的区别是什么?

可以从C程序调用两者来执行系统调用。这两个是否存在差异?

2 个答案:

答案 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