【问题标题】:Difference b/w exec( ) and system( ) in unixunix中exec()和system()的区别
【发布时间】:2011-11-15 01:19:17
【问题描述】:

在基于 unix 的系统中,命令 exec(const char *c) 和 system(const char *c) 到底有什么区别?

两者都可以从 C 程序中调用以执行系统调用。两者有区别吗?

【问题讨论】:

    标签: c unix system exec


    【解决方案1】:

    exec 用指定的程序替换您的进程。您的程序已完成,不会继续运行。

    spawn 启动一个新进程(可能首先使用fork),并在您的程序继续执行时运行指定的程序。

    system 启动一个新进程(可能首先使用fork),并在您的程序等待时运行指定的程序。一旦孩子退出,您的程序将继续。

    【讨论】:

    • system 也在 shell 下运行命令,如/bin/sh -c "command"。如果命令包含有趣的字符,则差别很大。
    【解决方案2】:

    exec 将执行一个文件,而system 将执行一个 shell 并为其提供参数。

    来自维基百科:

    它(系统)与 exec/spawn 系列函数的不同之处在于,它不是将参数传递给已执行的对象,而是将单个字符串传递给系统 shell,通常是 POSIX shell,/bin/sh -c。

    http://en.wikipedia.org/wiki/System_%28C_standard_library%29

    【讨论】:

    • 它不会执行控制台,只是一个shell。
    猜你喜欢
    • 2010-12-14
    • 2010-11-25
    • 2012-06-05
    • 2010-10-22
    • 2011-09-14
    • 2012-06-04
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多