如何使用FreeBSD的系统调用kqueue?

发布于 2022-09-02 01:18:39 字数 1069 浏览 18 评论 0

最近尝试使用BSD的API kqueue进行IO复用编程,这里只考虑kqueue管理tcp套接字,其他的文件描述符/信号等不考虑。
实验环境为Vmware中安装的32位的FreeBSD 10.2-Release i386虚拟机,是目前的最新版。

我在网上找到的代码资料主要是这个:https://en.wikipedia.org/wiki/Kqueue
我的服务端C语言代码: https://github.com/zhaochenyou/tips/blob/master/c/linux/socket/multiplexing/kqueue_server.c
我的客户端C语言代码:https://github.com/zhaochenyou/tips/blob/master/c/linux/socket/multiplexing/kqueue_client.c

目前是有bug的,我自己水平实在捉急,看不出来。
而且不知到为什么gdb无法调试server代码。
FreeBSD默认的C语言环境是clang 3.4 和 gdb 6.1,我自己另外写了好几个程序,用这两个都可以正常的编译和调试,但莫名其妙就是无法调试这个服务端代码。
后来我又尝试安装最新版的clang 3.7,gcc 5.3 和 gdb 7.1,但是很遗憾gdb 7.1有bug,无法使用,FreeBSD上没有lldb。所以目前我自己确实没有调试过这个server代码,只是用fprintf记录一些log来分析服务器的行为。但在log中也有一些莫名其妙的错误。
希望有哪位同学或者朋友可以帮我看一下,如果您在FreeBSD也遇到类似问题,请给我讲一下,不胜感激。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花间憩 2022-09-09 01:18:39

去看redis的代码,网络那一块代码也非常短,支持kqueue

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文