Select函数解析

#include <sys/time.h>

#include <stdio.h>

#include <sys/types.h>

#include<unistd.h>

#define STDIN 0

int main ()

{fd_set readfd;

struct timeval timeout;

//while(1)

timeout.tv_sec=3;

timeout.tv_usec=0;

FD_ZERO(&readfd);

FD_SET(STDIN,&readfd);

select(STDIN+1,&readfd,NULL,NULL,&timeout);

/*select它允许把进程本身挂起来,而同时使系统内核监听所要求的一组文件描述符的活动,只要确认在任何被监控的文件描述符上出现活动,select 调用将会返回指示该文件描述符已准备好的信息,从而实现了为进程选出随机的变化,而不必由进程本身对输入进行测试而浪费cpu开销!*/

if(FD_ISSET(STDIN,&readfd))

    {//int a=getchar();

    printf("有数据输入\n");}

else

   printf("time out\n"); 

}

//执行结果如下1

/*[root@linux leijiangtao]# ./a.out

3

有数据输入

[root@linux leijiangtao]# 3

bash: 3: command not found

[root@linux leijiangtao]# */





//当有int a=getchar()这行代码时;

//执行结果如下2

/*[root@linux leijiangtao]# ./a.out

3

有数据输入

[root@linux leijiangtao]# ./a.out

d

有数据输入

[root@linux leijiangtao]# */

 

你可能感兴趣的:(select)