#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#define MSG_TRY "try again\n"
#define MSG_TIMEOUT "time out\n"
int main(void)
{
int n,i,fd;
char buf[10];
fd=open("/dev/tty",O_RDONLY|O_NONBLOCK);/*非阻塞状态打开*/
if(fd<0){
perror("open /dev/tty\n");
exit(1);
}
for(i=0;i<5;i++){
n=read(fd,buf,10);
if(n>=0){
break;
}
if(errno!=EAGAIN){
perror("read /dev/tty\n");
exit(1);
}
sleep(1);
write(STDOUT_FILENO,MSG_TRY,strlen(MSG_TRY));
}
if(i==5){
write(STDOUT_FILENO,MSG_TIMEOUT,strlen(MSG_TIMEOUT));
}
else{
write(STDOUT_FILENO,buf,n);
}
close(fd);
return 0;
}
非阻塞读终端与等待超时
最新推荐文章于 2021-05-08 10:23:48 发布