【问题标题】:Where did packet of socket go in a forked scenario?在分叉场景中,套接字数据包去了哪里?
【发布时间】:2012-01-06 00:18:39
【问题描述】:

假设我有一个进程A和进程B,其中A作为TCP客户端,B作为TCP服务器,A已经连接到B,A中socket的文件描述符为fd1(A), B中的文件描述符为fd2,此时进程A fork出一个名为C的子进程,C也有fd1(C),它与fd1(A)指向同一个文件表,现在B向fd2写入一些东西,哪个进程 A 或 C 会收到消息?消息会被传递到 fd1(A) 吗?还是 fd1(C)?还是随机的?谢谢。

【问题讨论】:

    标签: sockets fork file-descriptor


    【解决方案1】:

    消息将发送到首先读取它的任何进程。如果 A 在 C 忙于做其他事情时执行 read()recv(),则 A 将获取数据,反之亦然。如果 A 和 C 同时执行read()recv(),则结果未定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 2012-03-21
      相关资源
      最近更新 更多