gpt4 book ai didi

c - execve() 和共享文件描述符

转载 作者:太空狗 更新时间:2023-10-29 17:14:50 26 4
gpt4 key购买 nike

我从 execve 的手册页中读到,如果进程 (A) 调用 execve,则已经打开的文件描述符将复制到新进程 (B)。

这里有两种可能性:-

1)是否意味着为进程B创建了一个新的文件描述符表,其中的条目是从进程A的旧文件描述符表中复制的

2) 或者进程 B 获取进程 A 的文件描述符表,因为在 execve 之后进程 A 将不复存在并且已经打开的文件只能从进程 B 关闭,如果它获取进程 A 的文件描述符表。

哪个是正确的?

最佳答案

execve 不会创建新进程。它用基于文件系统中可执行文件的新程序替换调用进程的程序镜像、内存空间等。通过关闭任何设置了 close-on-exec 标志的描述符来修改文件描述符表;其余的保持打开状态,并处于 execve 之前的相同状态(当前位置、锁定等)。

您可能会将此与 fork 上发生的事情混淆,因为 execve 通常以 fork 开头。当一个进程 fork 时,子进程有一个新的文件描述符表,它引用与父进程的文件描述符表相同的打开文件描述。

关于c - execve() 和共享文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179636/

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