zoukankan      html  css  js  c++  java
  • Linux while 获取键盘输入退出

    • c 语言实现如下:

        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
        #include <termios.h>
        #include <termio.h>
        #include <unistd.h>
        #include <fcntl.h>
        #include <errno.h>
    
        int kbhit(void)
        {
            struct timeval tv;
            struct termios old_termios, new_termios;
            int error;
            int count = 0;
    
            tcgetattr(0, &old_termios);        // 获取之前的标准输入终端状态
            new_termios = old_termios;   
    
            new_termios.c_lflag &= ~ICANON;    // 设置行模式原始输入
            new_termios.c_lflag &= ~ECHO;       // 设置行模式原始输入
            new_termios.c_cc[VMIN] = 1;
            new_termios.c_cc[VTIME] = 0;
            error = tcsetattr(0, TCSANOW, &new_termios);        // 设置 标准输入终端 状态立即生效
            tv.tv_sec = 0;
            tv.tv_usec = 100;
            select(1, NULL, NULL, NULL, &tv);            // 监控
    
            error += ioctl(0, FIONREAD, &count);        // 获取标准输入的字符
            error += tcsetattr(0, TCSANOW, &old_termios); // 还原 标准输入终端状态
    
            return error == 0 ? count : -1;        // 如果有字符输入会返回非零
        }
    
        int main(void)
        {
            while(!kbhit())               // 返回非零退出
            {
                printf("chenfulin is sb
    ");
                sleep(1);
            }
            return 0;
        }
    
  • 相关阅读:
    springboot笔记
    SpringBoot
    SpringBoot整合JPA
    Docker
    SpringMVC学习04:异常处理和拦截器
    SpringMVC学习03:文件上传
    SpringMVC学习02:响应数据和结果视图
    Mybatis学习04
    【java基础】初步理解面向对象、类、对象
    【Java基础】方法的重载
  • 原文地址:https://www.cnblogs.com/chenfulin5/p/7552055.html
Copyright © 2011-2022 走看看