С, а с помощью С++?
"хороший" вопрос. что есть "прочитать"?
У меня есть девайс на /dev/input/event0, я хочу его прочитать, но для этого нужно использую структуру input_event. Как в неё писать не используя функции типа read где параметром идут void* buf
Там аби у си и си++ в этом плане одинаковое
так или иначе это набор байт, который структуируется в input_event
Как это сделать силами с++?
Так так же как и в си
если все требования по выравниваю, по размерам базовых типов, по big/little endian соблюдены и в твоем устройстве ровно то, что в конечном итоге окажется в полях твоей структуры, то читай: input_event event {0}; device.read(&event, sizeof(event));
Можно. Просто читай так же как на С, но на С++.
Ты на С можешь?
Не могу, а я понял весь Линукс апи на с.
Так в чём проблема? Покажи реализацию на C, которая работает, и на C++, которая не работает.
Да, API всех OS на C, представляешь?
С++ в общении с OS не даст тебе никаких плюсов относительно С, если только не существует какой-то высокоуровневой библиотеки на С++, которая работает с этим аспектом API этой OS
C -> read(int fd, void *buffer, size_t count) Дальше мне нужно в него поместить структуру input_event из LinAPI С -> read(fd, &input_event, sizeof(struct input_event)) C++ -> read(char_type *s, streamsize) Как мне запихнуть первое во второе?
ты откуда второе взял вообще?
Нет, из LINUX API по работе с файлами
read(char_type *s, streamsize) вот это откуда взял?
То что принимает ifstream в read()
> LINUX API > ifstream
Мой вопрос и заключался в том, что можно как-то считывать /dev/input без LINUX API который на С, а решить вопрос С++
А чем тебе Си не нравится?
Так то можно, но через обёртку, которая внутри всё равно Сишную функцию зовёт
Обсуждают сегодня