Russian Qt Forum
Май 15, 2024, 17:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как открыть логический раздел в Linux?  (Прочитано 5087 раз)
Stariy
Гость
« : Сентябрь 26, 2010, 00:52 »

Нужно читать данные напрямую c USB-флэшки.
Пытаюсь делать вот так:
Код:
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    quint32 i;
    QString fname;
    QFile file;
    QFile drv;
    QStringList listflt;
    QFileInfoList drvlist;
    QFileInfo finfo;
    QDir dir;
    int fd;
    file.setFileName("/home/stariy/tst.txt");
    file.open(QIODevice::ReadWrite);
   
    listflt <<"*usb*";
    dir.setPath("/dev/disk/by-id");
    drvlist = dir.entryInfoList(listflt,QDir::AllEntries, QDir::NoSort);
    for(i=0;i<drvlist.count(); i++)
    {
        finfo = drvlist[i];
        fname=finfo.canonicalFilePath();
       
        fd = open(fname.toAscii().data(),O_RDONLY);
        if(fd==-1)
        {
            file.write(fname.toAscii().data());
            file.write(" not open\n");         
        }
        drv.setFileName(fname);
        if(drv.open(QIODevice::ReadOnly))
        {
            drv.close();
            file.write(fname.toAscii().data());
            file.write(" not open\n");
        }
    }
    file.close();
    return 0;
}
но не открывается никак... Подскажите, в чем дело может быть?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентябрь 26, 2010, 10:33 »

Прав рута не хватает?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Stariy
Гость
« Ответ #2 : Сентябрь 26, 2010, 11:10 »

Да, похоже на то.
функция open(fname.toAscii().data(),O_RDONLY) заработала, если запускать прогу через sudo proganame. А если под отладчиком - то ни в какую. Видимо, рутовых прав как раз и не хватало.
Кстати, а через QFile никак не получится это оганизовать, только чисто Сишными функциями?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Сентябрь 26, 2010, 11:23 »

Попробуй. Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Stariy
Гость
« Ответ #4 : Сентябрь 26, 2010, 11:37 »

Я попробовал, естественно, только не получилось, потому и спрашиваю - мож какая хитрость, флажок там какой-нить хитрый надо выставить или еще что? Так вот сходу, как обычный файл - не выходит.
Кстати, попутно еще вопросик, чтоб два раза не вставать - а в QT нету аналога виндовой GetLastError? Очень не хватает...
Записан
Авварон
Джедай : наставник для всех
*******
Online Online

Сообщений: 3258


Просмотр профиля
« Ответ #5 : Сентябрь 26, 2010, 14:15 »

http://doc.qt.nokia.com/4.7/qfile.html#error
http://doc.qt.nokia.com/4.7/qiodevice.html#errorString
« Последнее редактирование: Сентябрь 26, 2010, 14:17 от Авварон » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.166 секунд. Запросов: 22.