linux下select 和 poll的用法 2009-05-07 20:06 select()函数的作用 系统调用select和poll的后端实现,用这两个系统调用来查询设备是否可读写,或是否处于某种状态。如果poll为空,则驱动设备会被认为即可读又可写,返回值是一个状态掩码 如何使用select()函数? select()函数的接口主要是建立在一种叫'fd_set'类型的基础上。它('fd_set') 是一组文件描述符(fd)的集合。由于fd_set类型的长度在不同平台上不同,因此应...
by config2010 - Linux文档专区 - 2009-12-24 10:52:16 阅读(1375) 回复(1)
linux下select 和 poll的用法select()函数的作用 系统调用select和poll的后端实现,用这两个系统调用来查询设备是否可读写,或是否处于某种状态。如果poll为空,则驱动设备会被认为即可读又可写,返回值是一个状态掩码 如何使用select()函数? select()函数的接口主要是建立在一种叫'fd_set'类型的基础上。它('fd_set') 是一组文件描述符(fd)的集合。由于fd_set类型的长度在不同平台上不同,因此应该用一组标准的宏定义...
select和poll函数 在前一章中,我们遇到一个问题就是,客户端阻塞在了从标准输入中读取数据,与此同时,服务器由于某种原因要求关闭连接给客户端发送了一个FIN,而客户端只有从标准输入读到数据返回后才能知道连接已关闭。在这一章中介绍的I/O复用可以很好的解决这个问题。 1.I/O模型 a. Unix下共有五种I/O模型 阻塞I/O 非阻塞I/O I/O复用(select和poll) 信号驱动I/O(SIGIO) 异步I/O(Posix.1的aio_系列函数) b.阻塞I/O模型 ...
重读2.4 052 fs/select.c target="_blank">http://docs.google.com/Doc?id=dcbsxfpf_213vc73kssk 2008-4-22 这里讨论的是select和poll的系统调用实现方式. 首先要熟悉的是内核中为poll和select定义的各种输入输出消息的含义: pollIN 有数据可以读入,read不会阻塞,注意:select的请情况下,即使到EOF也是ready的. pollPRI 紧急数据,比如TCP,或者packet 模式的peseudo-terminal发现slave的状态有变化....
如果当前不可读,那么在sys_poll->do_poll中当 前进程就会睡眠在等待队列上,这个等待队列是由驱动程序提供的(就是poll_wait中传入的那个)。当可读的时候,驱动程序可能有一部分代码运行了 (比如驱动的中断服务程序),那么在这部分代码中,就会唤醒等待队列上的进程,也就是之前睡眠的那个,当那个进程被唤醒后do_poll会再一次的调用驱 动程序的poll函数,这个时候应用程序就知道是可读的了。 本文来自ChinaUnix博客...
2.1. 如何管理多个连接? “我想同时监控一个以上的文件描述符(fd)/连接(connection)/流(stream),应该怎么办?” 使用 select() 或 poll() 函数。 注意:select() 在BSD中被引入,而poll()是SysV STREAM流控制的产物。因此,这里就有了平台移植上的考虑:纯粹的BSD系统可能仍然缺少poll(),而早一些的SVR3系统中可能没有select(),尽管在SVR4中将其加入。目前两者都是POSIX. 1g标准,(译者注:因此在linux上两者都存在) sel...
用于需要向多个描述符读写的情况. 使用多进程或多线程的话需要同步, 比较复杂; 使用异步I/O的话每个系统实现不同且都有限制; 比较时宜的方法是采用多路I/O.多路I/O的功能. 用户建立一个描述符列表, 并调用一个多路I/O函数, 该函数直到列表中的描述符至少有一个可以进行I/O操作时才返回, 并且告知用户可用的描述符.poll_table_struct结构的作用: kernel应该管理一个总的poll_table_struct, 当应用程序调用poll或select等待...
下记以外的其他网址上的关联内容: http://www.builder.com.cn/2002/0320/45489.shtml Chapter 2. 一般文件操作(包括管道和套接字)Table of Contents2.1. 如何管理多个连接? 2.2. 我如何才能知道和对方的连接被终止? 2.3. 什么是读取目录的最好方法? 2.4. 我如何才能知道一个文件被另外进程打开? 2.5. 我如何锁住一个文件? 2.6. 我如何能发现一个文件已由另外一个进程更新? 2.7. 请问du是怎样工作的? 2.8. 我...