gpt4 book ai didi

c++ - 到 system() 还是 fork()/exec()?

转载 作者:IT老高 更新时间:2023-10-28 22:35:59 26 4
gpt4 key购买 nike

似乎有两种在 unix 中从 C 运行外部可执行文件的常用方法,

system()

打电话和

pid = fork()
switch(pid)
//switch statement based on return value of pid,
//one branch of which will include and exec() command

在功能相同的情况下(父进程等待子进程完成,子进程没有返回复杂信息),是否有任何理由更喜欢 fork/exec 而不是系统?

最佳答案

system 执行命令解释器,即 shell,它 (a) 比直接 fork/exec 慢,(b) 在不同系统上可能表现不同, (c) 是潜在的如果您将来自不受信任来源的字符串传递给它,则存在安全隐患。此外,system 等待子进程退出,而您可能希望它与父进程同时运行。

更一般地说,低级 fork/exec 为您提供额外的控制:在两个操作之前或之间,您可能想要 chdir、打开管道、关闭文件描述符、设置共享内存等

(通过不同的系统,我不是指 Windows 与 Unix(因为 Windows 甚至没有 fork):我说的是 Red Hat Linux 与 Ubuntu。前者使用 Bash 执行传递给 system,后者是轻量级的 POSIX 兼容 shell。)

关于c++ - 到 system() 还是 fork()/exec()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14830611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com