supre_mine 2021-05-20 09:39
浏览 20

为什么 键盘输入仍然是阻塞输入?

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    int fd = -1;
    char buf[100];
    int flag = -1;
    int ret = -1;
         
    fd = open("/dev/input/mouse0", O_RDONLY | O_NONBLOCK);
    if(fd < 0)
    {
        perror("open");
        return -1;
    }
    
    flag = fcntl(0, F_GETFL);           
    flag |= O_NONBLOCK;                   
    fcntl(0, F_SETFL, flag);           
    
    while(1)
    {
        //读鼠标
        memset(buf, 0, sizeof(buf));
        ret = read(fd, buf, 5);    
        if(ret > 0)
        {
            printf("鼠标读出的内容是:[%s]\n", buf);
        }
        
        //读键盘
        memset(buf, 0, sizeof(buf));
        ret = read(0, buf, 5);                        
        if(ret > 0)
        {
            printf("键盘读出的内容是:[%s]\n", buf);
        }
    
    }
    
    
    return 0;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 划分vlan后不通了
    • ¥15 GDI处理通道视频时总是带有白色锯齿
    • ¥20 用雷电模拟器安装百达屋apk一直闪退
    • ¥15 算能科技20240506咨询(拒绝大模型回答)
    • ¥15 自适应 AR 模型 参数估计Matlab程序
    • ¥100 角动量包络面如何用MATLAB绘制
    • ¥15 merge函数占用内存过大
    • ¥15 使用EMD去噪处理RML2016数据集时候的原理
    • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
    • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数