Russian Qt Forum

Qt => Вопросы новичков => Тема начата: dx от Март 08, 2011, 21:08



Название: функция ioctl в QT
Отправлено: dx от Март 08, 2011, 21:08
с горем пополам QT было поднято. ну вот теперь задача связать мое приложение с собственным драйвером. драйвер по сути сейчас пустышка, которая при вызове ioctl, open, read, write, release пишет printk'ом в лог ядра.
Сначала я пробовал найти функцию ioctl в классе QIODevice. Видимо или плохо искал или просто не судьба. Забил и попробовал как в старые добрые времена:
Код
Код:
#include <stdio.h>
#include <fcntl.h>
#include <linux/ioctl.h>
...
...
fptr = open("/dev/module", O_WRONLY);
retval = ioctl(fptr, cmd, param);
close(fptr);


но на это получаю ошибку: ‘ioctl’ was not declared in this scope.
Для моих задач ioctl очень удобна. Может посоветуете аналог этой ф-ции?? Или просто не парить мозги и делать на read, write??


Название: Re: функция ioctl в QT
Отправлено: brankovic от Март 09, 2011, 00:48
#include <linux/ioctl.h>

Как на счёт man ioctl?

#include <sys/ioctl.h>


Название: Re: функция ioctl в QT
Отправлено: kuzulis от Март 09, 2011, 08:28
Цитата: dx
Сначала я пробовал найти функцию ioctl в классе QIODevice.
И даже не ищите. QIODevice это базовый класс который предоставляет "унифицированный" высокоуровневый интерфейс для I/O устройств.
В Вашем случае (ИМХО), проще создать свой класс, унаследовавшись от  QIODevice, а всю платформоспецифические функции реализовать в приватном классе.

Короче - см. исходники Qt ( QFile, QAbstractSocket ).

А также ознакомтесь с этим:
http://habrahabr.ru/blogs/qt_software/76248/
http://habrahabr.ru/blogs/qt_software/76506/

ЗЫ: Это всё моё ИМХО, я бы поступил именно так (предположительно) :) . Хотя, мне неизвестна полностью ваша задача.


Название: Re: функция ioctl в QT
Отправлено: dx от Март 09, 2011, 12:34
 ;D ;D ;D ;D ;D ;D brankovic Вы были правы......ууууу.....
kuzulis Вам тоже спасибо....по Вашей ветке обязательно пойду