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
相关文档:
/bin 存放最常用的命令,此目录下的命令所有用户都有执行的权限
/boot Linux系统引导目录,此目录保存系统启动时的内核文件和内核映像文件及启动时所需的其它文件
/dev 设备文件,保存所有的硬件设备文件,如硬盘设备文件,软驱、光驱设备文件等等
/etc ......
#include <sys/select.h>
#include <sys/time.h>
#include
<sys/types.h>
#include <unistd.h>
int select(int
nfds,fd_set *readfds,fd_set *writefds, fd_set *except fds,struct timeval
*timeout)
void FD_SET(int fd,fd_set *fdset)
void FD_CLR(int fd,fd_set
*fdset)
void F ......
Linux的启动流程(/etc/inittab)
1. 从BIOS到KERNEL
BIOS自检->MBR(GRUB)->KERNEL->KERNEL自解压->内核初始化->内核启动
BIOS自检
当电脑开机的时候,电脑会进入BIOS,BIOS的工作主要是侦测电脑的周边配套设备是否工作正常,如CPU的类型、速度、缓存等
主板类型
内存的速 ......
第十二部分: 全部删除
Instrumentation support
第十三部分:全部删除
Kernel hacking --->破解核心?可不是当骸客啦,不选
第十四部分:全部删除
Security options --->
第十五部分:全部删除
Cryptographic options --->这是核心支持加密的选项
第十六部分:全部删除
Library rout ......
下载地址:http://www.fcitx.org/main/?q=node/9
Version-版本 Update─更新日期备注
fcitx-3.4.tar.bz2
2006-09-21
最新稳定版
fcitx-060910.tar.bz2
2006-09-10
测试版
fcitx-3.3.1-bin.tar.bz2
2006-08-30
稳定版(预编译包IA32)
选择最新版。。
源码包的安装;
[root@localhost beinan]# tar jxvf fci ......