c - 在客户端服务器程序中 fork 客户端

标签 c linux sockets

我正在尝试学习套接字编程。所以我的问题是,如果您在连接到套接字后即在执行连接调用后在客户端上 fork 了一个 child 。那么是否可以在子进程和父进程中使用套接字描述符独立读写呢?服务器只知道一个套接字。因此,如果您对 child 的阅读速度快于对 parent 的阅读速度。父级会丢失数据吗?

最佳答案

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

fork 将复制连接的文件描述符(与 dup/dup2/dup3 一样),但是这两个文件描述符只会被计算为两个引用相同的连接。

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

关于c - 在客户端服务器程序中 fork 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47590778/

相关文章:

c - VC++ 2010 中的内联汇编错误

DEV-C++ 中的编译器错误

android -/proc/net/route 列的含义是什么?特别是 Flags 列

c - fgetc,检查 EOF

c - 套接字编程-如何让服务器只存储数字

linux - 通过 Linux 命令行提取 file_name.zip.001

c++ - 当 CPU 负载过大时 pthread_cond_timedwait 超时

c++ - 通过套接字发送结构

java - 在这种情况下我应该使用什么类型的消息传递? GUI 向线程发送命令; java

C 套接字引发错误代码 22,EINVAL - 无效参数