/*************************************************************************
> File Name: io3.c
> Author: Qiang
> Mail: ilsinging@126.com
> Created Time: 2014年04月27日 星期日 18时35分32秒
************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<errno.h>
#include<string.h>
#define MSG_TRY "try again\n"
#define MSG_TIMEOUT "timeout!\n"
int main(void)
{
char buf[10];
int fd, n, i;
fd = open("/dev/tty", O_RDONLY|O_NONBLOCK);
if(fd < 0)
{
perror("open /dev/tty");
exit(1);
}
for(i=0; i<5; i++)//循环判断5次看能否读入数据
{
n = read(fd, buf, 10);
if(n >= 0)
break;
if(errno != EWOULDBLOCK)
{
perror("read /dev/tty");
exit(1);
}
sleep(1);
write(STDOUT_FILENO, MSG_TRY, strlen(MSG_TRY));
}
if(i == 5)
write(STDOUT_FILENO, MSG_TIMEOUT, strlen(MSG_TIMEOUT));//5次,超时
else
write(STDOUT_FILENO, buf, n);//正常读取
close(fd);
return 0;
}
转载于:https://my.oschina.net/u/1584433/blog/227284