【发布时间】:2019-04-17 05:45:09
【问题描述】:
我目前正在编写一个程序,它是一个多处理服务器应用程序。我目前的想法是对于每个传入的 TCP 连接,我接受它并将传入的套接字描述符传递给使用 fork() 创建的子进程。两个进程中的套接字描述符是否相同,或者是否会发生未定义的行为?似乎我可以从传入的套接字读取但不能写入。
【问题讨论】:
-
是的,没关系。例如,服务器进程侦听端口、接受连接并派生一个子进程来处理该连接曾经很常见,但有时您仍然会看到它。
-
虽然前段时间分叉服务器并不少见......但这种方法被淘汰以及事件服务器和混合服务器(具有工作进程和线程池)是首选的原因是有原因的。就每个客户端的资源而言,分叉服务器的成本更高,并且可能无法支持大量并发连接。
标签: c sockets networking multiprocessing