Я работаю над программой C с джойстиками, и я хотел бы получить последнее событие, которое является последней строкой файла js0. Я пытаюсь переместить курсор перед последним элементом, но это не работает. Есть идеи, почему?
int fd = open ("/dev/input/js0", O_RDONLY);
struct js_event e;
lseek(fd, -(sizeof(e)), SEEK_END);
read (fd, &e, sizeof(e));
switch(e.type){
case JS_EVENT_BUTTON: printf("btn\n");
break;
case JS_EVENT_AXIS: printf("axes\n");
break;
default: printf("smth else\n");
}
Я уверен, что файл, который я читаю, имеет длину не менее (sizeof(e)). Lseek возвращает мне -1, поэтому я получил errno, и это было 29 - Недопустимый поиск: почему это должен быть незаконный поиск? Я получаю те же результаты, даже если использую 0 в качестве смещения
lseek(fd, 0, SEEK_END)
Я использую последнюю версию Ubuntu, спасибо за вашу помощь
fd
возврат изopen
, чтобы узнать, не возникла ли ошибка при открытии файла? Вы всегда должны проверять наличие ошибок в своем системном вызове... на всякий случай. - person lurker   schedule 13.06.2017ls -l /dev/input/js0
? Вы уверены, что/dev/input/js0
является поисковым устройством? - person Andrew Henle   schedule 13.06.2017