使用system()执行二进制文件和使用fork / execvp的组合有什么区别。
有没有安全/可移植性/性能差异?
C中没有C ++的exception处理
我应该在Linux上使用哪个线程库用于multithreadingC程序?
如何以编程方式(C / C ++)获得Linux上的国家代码?
如何对C中包含“%”的string执行strcmp?
Windows服务启动,停止,debugging问题
系统也使用fork / exec …组合。 如果您自己执行fork / exec ,则可以在system正在阻塞(包括wait )的同时执行与正在运行的进程并行的执行。 另外system执行的命令不是直接的,而是通过一个shell(这会使setuid位出现问题)和system块/忽略某些信号(SIGINT,SIGCHILD,SIGQUIT)。
是的, system()通过shell运行命令,而exec()直接运行命令。 当然,引入一个shell会导致bug和漏洞。
编辑:当然, 手册页提供了更多的细节。
system()将fork() / exec()这个shell,然后shell将fork() / exec()你想启动的程序。
system()在Windows上工作,但fork()不工作。
除非你使用像Cygwin这样的兼容层,但是即使如此,叉子也可能非常昂贵。