在客户端服务器程序中的客户端

时间:2017-12-01 09:56:00

标签: c linux sockets

我正在尝试学习套接字编程。所以我的问题是,如果你在连接到套接字之后在客户端上分叉一个孩子,即在进行连接呼叫之后。那么你可以在子节点和父节点中使用套接字描述符独立读写吗?服务器只知道一个套接字。所以,如果你正在快速阅读孩子而不是父母。父母会有数据丢失吗?

1 个答案:

答案 0 :(得分:0)

是。如果两个进程试图对同一个连接进行操作,那么它们就会竞争。

分叉将复制连接的文件描述符(与dup / dup2 / dup3一样),但这两个文件描述符只是对同一连接的两次计数引用。

实际上,这意味着大多数fd-taking系统调用(read()write(),...)将通过共享目标文件(实际连接),但close()调用将只有递减引用计数,并且只有当引用计数变为shutdown()时才会启动连接关闭(与0系统调用一样)。