使用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(),但是允许读取孩子的输出并提供输入

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....