我一直在阅读它的手册页,但还没有成功地弄清楚它是如何工作的。在调用system()时,是一个新的子进程分叉和shell二进制exec() - 在其中编辑?这可能是一个愚蠢的猜测。
答案 0 :(得分:11)
是的,system()实际上是传递的命令字符串的fork()和exec()“sh -c”。可以找到一个示例实现(来自eglibc,最近从glibc派生)here。
答案 1 :(得分:2)
是的,系统(“foo bar”)相当于execv(“/ bin / sh”,[“sh”,“ - c”,“foo bar”])。