system()如何在linux中正常工作?

时间:2009-05-16 11:26:08

标签: c linux

我一直在阅读它的手册页,但还没有成功地弄清楚它是如何工作的。在调用system()时,是一个新的子进程分叉和shell二进制exec() - 在其中编辑?这可能是一个愚蠢的猜测。

2 个答案:

答案 0 :(得分:11)

是的,system()实际上是传递的命令字符串的fork()和exec()“sh -c”。可以找到一个示例实现(来自eglibc,最近从glibc派生)here

答案 1 :(得分:2)

是的,系统(“foo bar”)相当于execv(“/ bin / sh”,[“sh”,“ - c”,“foo bar”])。