【发布时间】:2009-05-16 11:26:07
【问题描述】:
我一直在阅读它的手册页,但还没有成功地弄清楚它是如何工作的。在调用 system() 时,是否分叉了一个新的子进程并且其中包含 shell 二进制 exec()?不过,这可能是一个愚蠢的猜测。
【问题讨论】:
我一直在阅读它的手册页,但还没有成功地弄清楚它是如何工作的。在调用 system() 时,是否分叉了一个新的子进程并且其中包含 shell 二进制 exec()?不过,这可能是一个愚蠢的猜测。
【问题讨论】:
是的,system() 本质上是一个 fork() 和 exec() "sh -c" 用于传递的命令字符串。可以在here 找到一个示例实现(来自 eglibc,最近从 glibc 分叉)。
【讨论】:
是的,system("foo bar") 等价于 execv("/bin/sh", ["sh", "-c", "foo bar"])。
【讨论】: