客户端与 epoll 的连接
我正在使用 epoll 和 pthreads 在 C++ 中为 linux 编写一个应用程序(客户端/服务器),但我不知道如何处理 connect()
调用以在描述符列表中附加新连接,如果带有 epoll_wait()
的循环正在运行(边缘触发),我该怎么做?...我可以使用虚拟文件描述符来触发事件和等待场景?简单地调用 connect()
就可以触发该事件??...
抱歉我的英语不好...
I'm programming an application(client/server) in C++ for linux using epoll y pthreads but I don't know how to handle the connect()
calls for attach a new connection in the descriptor list if a loop with epoll_wait()
is running(Edge-triggered), How to can I do it?... I could to use a dummy file descriptor to trigger an event and scape of wait?, or a simple call to connect()
could fire the event??...
Sorry for my bad english...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,您可以使用另一个文件描述符来唤醒
epoll_wait()
循环。使用pipe()
创建文件描述符。将管道的读取端添加到您的epoll
列表中,并在您想要唤醒它时向写入端写入一个字节。读取端可以只读取该字节并将其丢弃。Yes, you can use another file descriptor that's just for waking up your
epoll_wait()
loop. Usepipe()
to create the file descriptor. Add the reading end of the pipe to yourepoll
list, and write a single byte to the writing end when you want to wake it up. The reading side can just read that byte and discard it.