Название: как проверить существование устройств? Отправлено: juvf от Июнь 09, 2008, 10:46 Требуется сделать список существующих ком портов. Пробую так:
Код: QDir dir(QString("/dev/")); При выполнении в "код обработки найденного девайса" не попадаю, хотя в системе есть такое устройство как /dev/cuad0. Если вызываю dir.entryList(QStringList(QString("*")))) - то по идее должен попадать в "код обработки найденного девайса" на каждом девайсе, но попадаю туда только при нахождении "dumpdev", "fw0" и т.п. Эти устройства в mc подсвеченны серым и пишутся с собакой (@dumpdev, @fw0 и т.д.), а другие устройства, в том числе и куад подсвеченны розовым и пишутся с тире (-cuad0, -cuaU1, -ad0, -ad0s1a и т.д.). Почему-то entryList() не добавляет в возвращяемый список "розовые" устройства. Почему? Как можно осуществить перебор всех устройств? Название: Re: как проверить существование устройств? Отправлено: Alex03 от Июнь 09, 2008, 11:20 juvf похоже у тебя большие познания в линуксячьих файловых системах. :)
Асистента читать не пробовал? Цитировать QDir::System -List system files (on Unix, FIFOs, sockets and device files) Код: dir.setFilter(QDir::System); Название: Re: как проверить существование устройств? Отправлено: juvf от Июнь 09, 2008, 12:25 Alex03 Спасибо, помогло.
Познания не большие, учусь. )) Если явно не указывать фильтр в entryList(), то фильтор берется по умолчанию, а по умолчанию это QDir::NoFilter, т.е. я так понял что это означает - "Не фильтровать, а выводить ВСЁ". Почему были зафильтрованны девайсы - непонятно. Название: Re: как проверить существование устройств? Отправлено: Alex03 от Июнь 10, 2008, 05:36 Если явно не указывать фильтр в entryList(), то фильтор берется по умолчанию, а по умолчанию это QDir::NoFilter, т.е. я так понял что это означает - "Не фильтровать, а выводить ВСЁ". Почему были зафильтрованны девайсы - непонятно. Потому что фильтр не у entryList(), а у QDir.Цитировать QDir::QDir ( const QString & path, const QString & nameFilter, SortFlags sort = SortFlags( Name | IgnoreCase ), Filters filters = AllEntries ) Constructs a QDir with path path, that filters its entries by name using nameFilter and by attributes using filters. It also sorts the names using sort. The default nameFilter is an empty string, which excludes nothing; the default filters is AllEntries, which also means exclude nothing. The default sort is Name | IgnoreCase, i.e. sort by name case-insensitively. If path is an empty string, QDir uses "." (the current directory). If nameFilter is an empty string, QDir uses the name filter "*" (all files). Note that path need not exist. Т.е. nameFilter и filters - понятия разные. filters по умолчанию AllEntries. Цитировать enum QDir::Filter flags QDir::Filters This enum describes the filtering options available to QDir; e.g. for entryList() and entryInfoList(). The filter value is specified by combining values from the following list using the bitwise OR operator: Constant Value Description QDir::Dirs 0x001 List directories that match the filters. QDir::AllDirs 0x400 List all directories; i.e. don't apply the filters to directory names. QDir::Files 0x002 List files only. QDir::Drives 0x004 List disk drives (ignored under Unix). QDir::NoSymLinks 0x008 Do not list symbolic links (ignored by operating systems that don't support symbolic links). QDir::NoDotAndDotDot 0x1000 Do not list the special entries "." and "..". QDir::AllEntries Dirs | Files | Drives List directories, files, drives and symlinks (this does not list broken symlinks unless you specify System). QDir::Readable 0x010 List files for which the application has read access. The Readable value needs to be combined with Dirs or Files. QDir::Writable 0x020 List files for which the application has write access. The Writable value needs to be combined with Dirs or Files. QDir::Executable 0x040 List files for which the application has execute access. The Executable value needs to be combined with Dirs or Files. QDir::Modified 0x080 Only list files that have been modified (ignored under Unix). QDir::Hidden 0x100 List hidden files (on Unix, files starting with a .). QDir::System 0x200 List system files (on Unix, FIFOs, sockets and device files) QDir::CaseSensitive 0x800 The filter should be case sensitive if the file system is case sensitive. |