作为新客户端套接字accept()
的参数,
侦听器套接字位于共享内存区域,并由所有分叉服务器进程共享。
但是每个服务器进程 accept()
returns the same socket descriptor after
accept()`被所有不同的分叉进程调用。
fork()
是否也为套接字描述符和每个分叉进程创建了单独的区域
分别管理该区域?
这就是他们产生重复套接字描述符的原因吗?
我打算使用select()
来检测所有套接字描述符的更改,
但因为它们产生了所有相同的描述符,所以我无法解决这个问题。
答案 0 :(得分:4)
是的,套接字描述符(以及文件描述符)值是在每个进程的基础上管理的。