bierdaci 发表于 2003-10-19 19:50:20

请教poll和select的问题

上一个问题还没人帮我解决我也懒得研究了。使用poll实现非阻塞型IO我不大理解,我把poll_wait和free_wait源码看了一下,两个函数的实现倒是不难只是不明白这个等待队列的数组为什么叫轮询表还有这个轮询表有什么用?是不是poll的上层接口有让轮询表里的等待队列睡眠的功能?本想在应用程序里试一试poll系统调用到底做了什么,但poll系统调用的原型是什么?手里资料不多只能瞎猜,LDD2里介绍的也不多,我没有多停留在这一章里早就跳到获取内存一章了,看了linux源代码再看LDD2还算轻松,觉得LDD2是学习内核编程的非常好的书,感谢大家推荐的这本书。还有谁告诉我应用程里的系统调用fcntl的命令的包含文件是什么,fcntl.h里没有那些命令,比如F_GETFL和O_NONBOCK编译时都找不到,还有一个保存错误代码的变量errno包含在哪个头文件里?

jjww 发表于 2003-10-20 09:00:55

如果只是用户空间查看,man poll, man fcntl就可以查到相关信息。
比如:man fcntl

#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);
.......

所谓轮询,是定时的按一定顺序查看对象(比如数组),如果满足条件就做,不满足则等待下一次轮询。

Dragonfly 发表于 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.
页: [1]
查看完整版本: 请教poll和select的问题