gpt4 book ai didi

sockets - 如果子级不关闭由父级打开的监听器套接字文件描述符,会发生什么?

转载 作者:行者123 更新时间:2023-12-03 11:53:20 24 4
gpt4 key购买 nike

如果子级不关闭由父级打开的监听器套接字文件描述符,会发生什么?

如果两个都在主监听器fd上监听,哪个进程将被唤醒?

最佳答案

没有任何过程将被“唤醒”,您必须调用accept(2)。这是正在发生的事情。

您创建一个套接字,使内核分配大量资源,结构等。

s = socket(....);

您将套接字设置为“监听状态”。内核注意到这一点,并在结构中翻转一个或两个标志。
listen(s, -1);

fork(2),现在有文件描述符的两个副本。连接到达。谁得到的?

首先调用accept的人。如果两者当前都在 accept上等待,则无法确定顺序。

当连接到达时,内核将其添加到“待处理的连接”队列中。当具有该文件描述符的任何进程打开 accept(2)时,内核将从队列中删除一个连接,并将其传递给调用方(返回新的文件描述符)。

结论是,如果子进程继承了文件描述符,则它只会得到自己的接受连接的机会。

关于sockets - 如果子级不关闭由父级打开的监听器套接字文件描述符,会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6754435/

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