博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年12月25日

摘要: 在学习ioctl 时常常跟 read, write 混淆。其实 ioctl 是用来设置硬件控制寄存器,或者读取硬件状态寄存器的数值之类的。而read,write 是把数据丢入缓冲区,硬件的驱动从缓冲区读取数据一个个发送或者把接收的数据送入缓冲区。ioctl(keyFd, FIONREAD, &b)得到缓冲区里有多少字节要被读取,然后将字节数放入b里面。接下来就可以用read了。read(keyFd, &b, sizeof(b))这两个可以用在按键控制上,先是检测按键是否被按下,如果被按下就放在B里,然后user 在读取按键对应数值。Listing - Getting the n 阅读全文

posted @ 2012-12-25 16:34 皇星客栈--Linux 阅读(9088) 评论(0) 推荐(0) 编辑

摘要: FD_set FD_zero select()机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄, 还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fe_set的内容,由此 来通知执行了select()的进程哪一socket或文件可读。 fd_set set; FD_ZERO(&set); /*将set清零使集合中不含任何fd*/ FD_SET(fd, &set); /*将fd加入set集合*/ FD_CLR(fd, &se 阅读全文

posted @ 2012-12-25 15:18 皇星客栈--Linux 阅读(2537) 评论(0) 推荐(0) 编辑