首先定义一个fd_set:
fd_set readfd
定义一个struct timeval :
struct timeval timeout;
struct timeval中有两个参数:
timeout.tv_sec=5;
timeout.tv_usec=0;
用来设置select()的等待时间。
然后把要监听的文件描述符(例如:fd = open("/dev/ttyS2", O_RDWR);)加入到readfd中:
FD_SET(fd, &readfd);
如果是键盘输入的话就把0加入进去:
FD_SET(0, &readfd);
select放在while(1)中,注意每次循环都要把readfd清空,重新把fd放到里面,执行:
FD_ZERO(&readfd);
后再重新加载
select用法:
ret=select(fd+1, &readfd, NULL, NULL, &timeout);
if(ret==-1)
printf("error!!!!!!\n");
else if(ret)
{
if(FD_ISSET(fd, &readfd))
{
//监测到执行的程序
}
if(FD_ISSET(0, &readfd))
{
//0为标准输入,当有输入时执行的程序
}
}