使用system()执行二进制文件和使用fork/execvp的组合有什么区别.
是否有任何安全性/可移植性/性能差异.
系统还使用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()
重量是fork()
/的两倍exec()