首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Linux中"system“和"exec”的区别?

Linux中"system“和"exec”的区别?
EN

Stack Overflow用户
提问于 2009-11-09 02:29:48
回答 10查看 85.9K关注 0票数 74

systemexec系列命令有什么区别?我特别想知道他们中的哪一个创建子进程来工作?

EN

回答 10

Stack Overflow用户

发布于 2009-11-09 02:33:44

system()调用sh来处理您的命令行,因此您可以获得通配符扩展等。exec()和它的朋友用新的进程映像替换当前的进程映像。

使用system(),您的程序将继续运行,并且您将获得有关所调用的外部命令的一些状态。使用exec(),您的进程将被清除。

一般而言,我猜您可以将system()视为更高级别的接口。您可以使用fork()exec()wait()的某种组合来复制它的功能。

要回答您的最后一个问题,system()会创建子进程,而exec()系列不会。为此,您需要使用fork()

票数 98
EN

Stack Overflow用户

发布于 2009-11-09 02:33:06

exec函数成功时会替换当前运行的进程映像,不会创建子进程(除非您之前使用fork()自己创建了子进程)。system()函数派生一个子进程,并在提供的命令执行完毕或出现错误时返回。

票数 20
EN

Stack Overflow用户

发布于 2009-11-09 02:34:48

system()将在它产生的子进程中执行所提供的命令。exec()将用您指定的新可执行文件的调用替换当前进程。如果你想使用exec派生一个子进程,你必须提前fork()你的进程。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1697440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档