我正在尝试学习套接字编程。所以我的问题是,如果您在连接到套接字后即在执行连接调用后在客户端上 fork 了一个 child 。那么是否可以在子进程和父进程中使用套接字描述符独立读写呢?服务器只知道一个套接字。因此,如果您对 child 的阅读速度快于对 parent 的阅读速度。父级会丢失数据吗?
最佳答案
是的。如果两个进程试图对同一个连接进行操作,它们就会竞争。
fork 将复制连接的文件描述符(与 dup
/dup2
/dup3
一样),但是这两个文件描述符只会被计算为两个引用相同的连接。
实际上这意味着大多数 fd-taking 系统调用(read()
,write()
,...)将通过共享目标文件(实际连接),但是 close()
调用只会减少引用计数,并且只会在引用计数变为 时启动连接关闭(与
。shutdown()
系统调用一样) 0
关于c - 在客户端服务器程序中 fork 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47590778/