2 aasddfddf AASDDFDDF 于 2014.08.11 14:53 提问

linux输入子系统测试部分的问题(int)count/sizeof(struct input_event)

int main(void)
{
int buttons_fd;
int key_value,i=0,count;

struct input_event ev_key;

buttons_fd = open("/dev/event0", O_RDWR);
if (buttons_fd < 0) {
    perror("open device buttons");
    exit(1);
}

for (;;) {
    count = read(buttons_fd,&ev_key,sizeof(struct input_event));//访问输入型的设备读出来的是一个结构input_event,不再是一个单纯的数字

    for(i=0; i<(int)count/sizeof(struct input_event); i++)
        if(EV_KEY==ev_key.type)
            printf("type:%d,code:%d,value:%d\n", ev_key.type,ev_key.code,ev_key.value);

        if(EV_SYN==ev_key.type)
            printf("syn event\n\n");
}

close(buttons_fd);
return 0;

}
问下count不是比sizeof(struct input_event)小或者相等么
求解释下这句

2个回答

codehat
codehat   2014.08.15 19:08

我觉得是为了对齐吧,保证读出来的一定是一个完整的结构体。。。

Quartu_flag
Quartu_flag   2017.11.08 22:03

sizeof(struct input_event)的大小是16,count读出来的也是16,像楼上说的,为了对齐,保证读出来的是一个完整的input_event。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!