Russian Qt Forum

Компиляторы и платформы => Linux => Тема начата: Stariy от Сентябрь 26, 2010, 00:52



Название: Как открыть логический раздел в Linux?
Отправлено: 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;
}
но не открывается никак... Подскажите, в чем дело может быть?


Название: Re: Как открыть логический раздел в Linux?
Отправлено: Пантер от Сентябрь 26, 2010, 10:33
Прав рута не хватает?


Название: Re: Как открыть логический раздел в Linux?
Отправлено: Stariy от Сентябрь 26, 2010, 11:10
Да, похоже на то.
функция open(fname.toAscii().data(),O_RDONLY) заработала, если запускать прогу через sudo proganame. А если под отладчиком - то ни в какую. Видимо, рутовых прав как раз и не хватало.
Кстати, а через QFile никак не получится это оганизовать, только чисто Сишными функциями?


Название: Re: Как открыть логический раздел в Linux?
Отправлено: Пантер от Сентябрь 26, 2010, 11:23
Попробуй. :)


Название: Re: Как открыть логический раздел в Linux?
Отправлено: Stariy от Сентябрь 26, 2010, 11:37
Я попробовал, естественно, только не получилось, потому и спрашиваю - мож какая хитрость, флажок там какой-нить хитрый надо выставить или еще что? Так вот сходу, как обычный файл - не выходит.
Кстати, попутно еще вопросик, чтоб два раза не вставать - а в QT нету аналога виндовой GetLastError? Очень не хватает...


Название: Re: Как открыть логический раздел в Linux?
Отправлено: Авварон от Сентябрь 26, 2010, 14:15
http://doc.qt.nokia.com/4.7/qfile.html#error
http://doc.qt.nokia.com/4.7/qiodevice.html#errorString