gpt4 book ai didi

sockets - 如何在 fork 进程中处理套接字连接

转载 作者:可可西里 更新时间:2023-11-01 02:28:51 30 4
gpt4 key购买 nike

例如,我有一个程序用作监听端口 5000 的 TCP 服务器。

现在我想运行另一个命令行进程以与该服务器并行运行。我知道正确的做法是 fork 服务器,而不是调用“exec”....

我的问题是,子进程是否也“拥有”这个端口 5000?如果我要释放这个5000端口,是不是需要把父进程和子进程都杀掉?

我很好奇这个套接字连接是如何在 fork 中处理的。

最佳答案

  1. 首先,accept() 传入连接。接受进程现在有了监听套接字和新接受的套接字的句柄。
  2. fork 和:
    • 在 child 身上:
      1. 关闭监听套接字。
      2. 使用已接受的套接字执行操作。
    • 在父级中:
      1. 关闭已接受的套接字。
      2. 恢复接受循环。

当对句柄的所有引用都关闭时,各种套接字资源将被回收。如果进程终止,则其所有句柄都将隐式关闭。因此,如果一个子进程关闭它继承到监听套接字的句柄,则该套接字剩下的唯一句柄存在于父进程中。然后,当父进程终止或显式关闭此句柄时,监听套接字将被回收。

关于sockets - 如何在 fork 进程中处理套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6014055/

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