易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux select

select函数是用于程序监视多个文件描述符(file descrīptor)的状态变化。程序会停在select这里等待,直到被监视的文件描述符有某一个或多个发生了状态改变。select()的机制中提供一fd_set的数据结构,实际上是一long类型的数组, 每一个数组元素都能与一打开的文件描述符(不管是Socket描述符,还是其他 文件或命名管道或设备描述符)建立联系,建立联系的工作由程序员完成, 当调用select()时,由内核根据IO状态修改fd_set的内容,由此来通知执 行了select()的进程哪一Socket或文件可读.
select函数原型如下:
   int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
函数的最后一个参数timeout显然是一个超时时间值,其类型是struct timeval *,即一个struct timeval结构的变量的指针,所以我们在程序里要申明一个struct timeval tv;然后把变量tv的地址&tv传递给select函数,如果最后一个超时的时间值设置为NULL表示无超时时间。struct timeval结构如下:
struct timeval
{
long   tv_sec;     /* seconds */
long   tv_usec;    /* microseconds */
};
第2、3、4三个参数的类型是一样的: fd_set *,即我们在程序里要申明几个fd_set类型的变量,比如定义了rfds, wfds, efds。
另外关于fd_set类型的变量,还有一组标准的宏定义来处理此类变量:
FD_ZERO(fd_set *fdset):清空fdset与所有文件描述符的联系。
FD_SET(int fd, fd_set *fdset):建立文件描述符fd与fdset的联系。
FD_CLR(int fd, fd_set *fdset):清除文件描述符fd与fdset的联系。
FD_ISSET(int fd, fd_set *fdset):检查fd_set联系的文件描述符fd是否可读写,>0表示可读写。
(关于fd_set及相关宏的定义见/usr/include/sys/types.h)定义的这三个参数都是描述符的集合,第一个rfds是用来保存这样的描述符的:当描述符的状态变成可读的时系统就会告诉select函数返回,第二个wfds是指有描述符状态变成可写的时系统就会告诉select函数返回,第三个参数efds是特殊情况,即描述符上有特殊情况发生时系统会告诉select函数返回。下面以一个输入为例来说明:
......other codes
int fd1, fd2;         /* 在定义两个描述符*/
fd1 = socket(...);    /* 创建socket连接*/
fd2


相关文档:

磁盘IO性能监控(Linux 和 Windows)

磁盘的IO性能是衡量计算机总体性能的一个重要指标。Linux提供了iostat命令来获却磁盘输入/输出(即IO)统计信息,Windows则提供了WMI接口,可以通过编写一个简单的脚本来获取与iostat相当的功能。
1、Linux下的iostat命令
iostat -d -k -t 2
每隔2秒统计一次磁盘IO信息,直到按Ctrl+C终止程序,-d 选项表示统计磁盘信息 ......

在menuconfig中配置Linux内核裁剪的具体步骤(1)

在menUConfig中配置,可以对进行Linux内核配置选项及删改。本文介绍详细配置方法。
第一部分:全部删除
  Code maturity level options ---> 代码成熟等级选项
  []Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.不选。 ......

Linux的启动过程详解

Linux的启动流程(/etc/inittab)
  1. 从BIOS到KERNEL
  BIOS自检->MBR(GRUB)->KERNEL->KERNEL自解压->内核初始化->内核启动
  BIOS自检
  当电脑开机的时候,电脑会进入BIOS,BIOS的工作主要是侦测电脑的周边配套设备是否工作正常,如CPU的类型、速度、缓存等
  主板类型
  内存的速 ......

在menuconfig中配置Linux内核裁剪的具体步骤(2)

第九部分:除以下选项,其它全部删除
  Networking
  Networking options --->
  []Unix domain sockets
  []TCP/IP networking
第十部分:除以下选项,其它全部删除
  Device Drivers --->设备驱动
  Block devices-------〉
  []Compaq SMART2 support
  [] Compaq Smart Array 5xxx supp ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号