摘要: 给出一个结构体成员的地址计算该结构体的起始地址,据说内核代码中有这样用的,但还没有看到。不过觉得这个题的解决方法还是有一定技巧的,就总结一下。下面是实现的代码。 其实整个程序中最关键的部分就是如何求出结构体中某个成员相对于结构体首地址的偏移量。这里的解决方法是:假设存在一个虚拟地址0,将该地址强制转 阅读全文
posted @ 2016-11-04 22:36 GreenHand# 阅读(3532) 评论(0) 推荐(0) 编辑
摘要: 1、基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文 阅读全文
posted @ 2016-11-04 22:33 GreenHand# 阅读(436) 评论(0) 推荐(0) 编辑
摘要: epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获得较好的性能( 此时被监视的文件描述符数目非常大,与旧的 select 和 poll 系统调用完成操 阅读全文
posted @ 2016-11-04 22:00 GreenHand# 阅读(586) 评论(0) 推荐(0) 编辑
摘要: select(),poll(),epoll()的总结:http://www.cnblogs.com/Anker/p/3265058.html 在socket编程中,仅仅使用connect,accept、这些带有阻塞(block)的程序时,如果没有某个时间来满足条件,就会一直处于阻塞状态。可想而知在一 阅读全文
posted @ 2016-11-04 21:40 GreenHand# 阅读(585) 评论(0) 推荐(0) 编辑