求教!! linux read函数 出错? 400 报错
请求懂的人帮忙看一下!
read input子系统中的event2文件,出错很奇怪
代码如下:有疑问的部分用红色标注
#include <stdio.h>
#include <stdlib.h>
#include <linux/input.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
static void show_event(struct input_event* event)
{
printf("%d %d %d/n", event->type, event->code, event->value);
return;
}
int main()
{
struct input_event event;
printf("sizeof of input_event:%d\n",sizeof(event)); //打印16
const char *file_name = "/dev/input/event2";
int fd = open(file_name, O_RDONLY);
if(fd > 0)
{
while(1)
{
printf("in while\n"); //可以被执行到
int ret = read(fd, &event, sizeof(event)); //将sizeof(event) 换成小于16的数字,就可以执行到下一条语句
printf("ret: %d\n",ret); //不被执行了
if(ret == sizeof(event))
{
printf("before show event\n");
show_event(&event);
}
else
{
printf("in else!\n");
break;
}
}
close(fd);
}
return 0;
}
谢谢~~
木有人帮忙吗? 自己顶以下把TnT
######东软的?哪个部门的?######厄……又试了一下,读Ubuntu下/dev/input/event1 之后,read函数就可以成功返回了。
看来还是input中event文件的问题啊
######这...read函数是阻塞模式,你是要读外设吗?######谢谢回答
event1 是键盘 , 以上代码只是个demo ,要读得外设现在还没有
但是read是阻塞模式是什么意思? 不太懂 , 请指教
######回复 @晓风拂柳 : 嗯 的确像您说的那样 一直在等键盘输入。 那就先这样吧 谢谢~######我也是查了下资料,read只有在socket编程的时候才可以设置成非阻塞模式,其他地方被办法。阻塞模式就是等待响应,你这里是等待键盘按键响应,只有按键按下去了,才会执行下去。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。