微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用fork / execvp和系统调用之间的区别

使用system()执行二进制文件和使用fork / execvp的组合有什么区别。

有没有安全/可移植性/性能差异?

C中没有C ++的exception处理

我应该在Linux上使用哪个线程库用于multithreadingC程序?

如何以编程方式(C / C ++)获得Linux上的国家代码

如何对C中包含“%”的string执行strcmp?

Windows服务启动,停止,debugging问题

系统也使用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()重一倍

system()在Windows上工作,但fork()不工作。

除非你使用像Cygwin这样的兼容层,但是即使如此,叉子也可能非常昂贵。

还有popen(),它就像system(),但是允许读取孩子的输出并提供输入

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐