我一直在阅读《套接字编程》下有关 select() 系统调用的内容,我开始知道使用它而不是 fork() 的主要目的是: fork() 只能用于非阻塞 IO 调用的场景。
后来我遇到了一个程序(下面附有代码的截图),它在我们需要将并发 TCP echo 服务器和迭代 UDP 服务器组合成单个服务器的场景中实现了 select() ;为了复用 TCP 和 UDP 客户端。但服务器端程序似乎使用 fork() 创建子进程,以便与 TCP 客户端建立并通信。
我的问题是,如果我们使用 select(),为什么要使用 fork() 呢?