QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2039|回复: 2

请教poll和select的问题

[复制链接]
发表于 2003-10-19 19:50:20 | 显示全部楼层 |阅读模式
上一个问题还没人帮我解决我也懒得研究了。使用poll实现非阻塞型IO我不大理解,我把poll_wait和free_wait源码看了一下,两个函数的实现倒是不难只是不明白这个等待队列的数组为什么叫轮询表还有这个轮询表有什么用?是不是poll的上层接口有让轮询表里的等待队列睡眠的功能?本想在应用程序里试一试poll系统调用到底做了什么,但poll系统调用的原型是什么?手里资料不多只能瞎猜,LDD2里介绍的也不多,我没有多停留在这一章里早就跳到获取内存一章了,看了linux源代码再看LDD2还算轻松,觉得LDD2是学习内核编程的非常好的书,感谢大家推荐的这本书。还有谁告诉我应用程里的系统调用fcntl的命令的包含文件是什么,fcntl.h里没有那些命令,比如F_GETFL和O_NONBOCK编译时都找不到,还有一个保存错误代码的变量errno包含在哪个头文件里?
发表于 2003-10-20 09:00:55 | 显示全部楼层
如果只是用户空间查看,man poll, man fcntl就可以查到相关信息。
比如:man fcntl
[code:1]
#include <unistd.h>
#include <fcntl.h>

int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
.......
[/code:1]
所谓轮询,是定时的按一定顺序查看对象(比如数组),如果满足条件就做,不满足则等待下一次轮询。
回复

使用道具 举报

发表于 2003-10-21 00:18:36 | 显示全部楼层
check u /usr/inlcude/errno.h it will tell u in bits/errno.h, asm/errno.h/ ....


check os book for difference between poll and select. basically, poll is u check clock every 10 minutes to see if class is over. select is u tell u friend, notify me when class is over, and then sleep till u friend notify u.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-17 06:50 , Processed in 0.057546 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表