linux无阻塞输入

//头文件
#include <sys/ioctl.h>
#include <sys/io.h>

ioctl(STDIN_FILENO,FIONBIO,&attr);//清除阻塞输入,attr为1,这时读取不能使用getchar或scanf,如果没数据会直接返回

len = read(STDIN_FILENO,buf,sizeof(buf)-total);//读取命令窗口是否有输入
if (len>0){
total += len;
if(buf[total-1]=='\n'){
if((47<(int)buf[0])&&(58>(int)buf[0])){Speed = atoi(buf);}
if (buf[0]=='q'){ioctl(STDIN_FILENO,FIONBIO,&attr);return;}
total = 0;
memset(buf, 0, sizeof(buf));
}
}

退出时记得恢复阻塞输入
ioctl(STDIN_FILENO,FIONBIO,&attr)//attr为0

posted @   Panda990  阅读(160)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示