首页 > 系统相关 >linux无阻塞输入

linux无阻塞输入

时间:2023-02-08 11:58:00浏览次数:41  
标签:FILENO attr STDIN 阻塞 len linux total buf 输入

//头文件
#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

标签:FILENO,attr,STDIN,阻塞,len,linux,total,buf,输入
From: https://www.cnblogs.com/panda990/p/17101211.html

相关文章

  • 阻塞式并发队列
    --BlockingQueue:阻塞式队列--可以实现生产者消费者模式 --LinkedBQ:链表实现    --ArrayBQ:数组实现,有限队列    --Delay......
  • Linux编写C/C++程序
    ​1、安装gcc、g++编译器1.切换root用户suroot然后输入密码2.输入命令yuminstallgccyuminstallg++3.通过查找路径来检查安装是否完成whichgccw......
  • linux系统安装java环境
    首先要去官网下载jdk,网址:https://www.oracle.com/java/technologies/downloads/#java8下载好压缩包后用XShell连接linux进入usr/local:cdusr/local 然后通过xftp将......
  • linux配置jdk
    1、root用户配置,vim/etc/profile,添加如下内容#setjavaenviromentJAVA_HOME=/opt/jdk1.8.0_311JRE_HOME=/opt/jdk1.8.0_311/jreCLASS_PATH=.:$JAVA_HOME/lib/dt.jar......
  • Linux 多进程程序调试实例(七) -- 套接字
    套接字套接字介绍socket套接字是支持不同主机不同进程之间的通信套接字函数socket套接字函数介绍套接字编程在服务端,套接字编程顺序为套接字创建(socket),套接......
  • 11.2支撑硬件输入输出的IN指令和OUT指令
      上图是IN指令和OUT指令的语法  上图是数据传递 ......
  • 11.3编写测试用的输入输出程序
    首先让我们利用IN指令和OUT指令,来进行一个直接控制硬件的试验。假设该试验的目的是让计算机内配置的蜂鸣器(小喇叭)发音。虽然蜂鸣器内置在计算机内部,但其本身也是外围......
  • Linux 目录的可执行权限的含义
    总所周知:Linux的文件和目录的权限,只有RWX三种。r(Read,读取)对于文件:具有读取文件内容的权限对于目录:具有浏览目录的权限w(Write,写入)对于文件:具有新增,修改,删除文......
  • linux安装maven
    下载安装mavenmaven官网:https://maven.apache.org/download.cgi下载完成后,解压文件,将解压后的maven文件移动到想放的目录下配置mavenmaven仓库资源目录设置配置文件......
  • linux socket
    Linux网络基础编程 内容简介一、socket的概念二、socket的类型三、socket的位置四、网络地址五、端口号六、字节序七、socket基础编程 一、socket的概......