多进程 epoll

koalapheonix 2011-08-17 05:22:52
我想写一个多进程服务器

我在父进程中调用listen监听一个端口,我把它加入到epoll中。
我然后fork出一些子进程出来。
我发现在用client连接的时候
多个子进程的epoll_wait都返回了,而且都能连接上这个client,然后就出错了。
我想一个子进程连接就行了,别的子进程就别连接了,这要怎么样实现呢?
...全文
253 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdhit 2011-09-29
  • 打赏
  • 举报
回复
一般是父进程fork出多个子进程,在子进程的内部开一个线程监听,另外一批线程去处理每一个已连接的请求吧
koalapheonix 2011-08-18
  • 打赏
  • 举报
回复
我今天查了《Unix网络编程》,上面说多个子进程共用一个listen fd,在有请求时,只会有一个子进程能accept成功,怎么在我这就不对呢?
koalapheonix 2011-08-18
  • 打赏
  • 举报
回复
今天查了一下《UNIX网络编程》里面说多个子进程共用一个listen fd,只会有一个子进程能accept,我这里怎么就出问题了。
nickowen 2011-08-17
  • 打赏
  • 举报
回复
理解reactor和proactor模型
你就知道为什么了
koalapheonix 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 freezezdj 的回复:]

epoll 常用模型
单线程 + epoll + 非阻塞IO。
没你这么用的。

用多进程,就不要用epoll了。
[/Quote]
我在看lighttpd的代码时看它的确是在子进程,也就是worker进程中使用的epoll(非阻塞),我基本照它的实现去写的,不知道怎么就出问题了。
koalapheonix 2011-08-17
  • 打赏
  • 举报
回复
是想用多进程,我没有阻塞,我把监听的文件描述符设置成了非阻塞的了。
程序漫步 2011-08-17
  • 打赏
  • 举报
回复
完成端口模型。类似 winodws 的 IOCP吧!

没尝试过 用多 进程啊
冻结 2011-08-17
  • 打赏
  • 举报
回复
epoll 常用模型
单线程 + epoll + 非阻塞IO。
没你这么用的。

用多进程,就不要用epoll了。
Qlaiaqu 2011-08-17
  • 打赏
  • 举报
回复
多进程还是多线程?
你说得不就是阻塞模型吗。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧