Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сканирование директории и выбор файлов по номеру, помогите реализовать... 
V
    Опции темы
iPlay
Дата 9.3.2008, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 23.9.2007

Репутация: нет
Всего: 1



Да точно всё сделал.
PM MAIL   Вверх
DRUID3
  Дата 24.6.2009, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 20.6.2005
Где: Kyyiv

Репутация: 1
Всего: 9



Цитата(iPlay @  9.3.2008,  10:26 Найти цитируемый пост)
меня получается такое я вывел файлы по команде dir /bin а когда запустил свою программу она вывела 24 файла как и требовалось но не попрядку как в команде dir /bin а както вразброс и не с 25го по счету.

Эээ... Я понимаю, что тема давно ушла в небытие, но вдруг кто-то бродя просторами интернета в поисках ответов на похожие вопросы(вот как я сейчас smile ) наткнется.

Думаю надо уточнить. Для вывода отсортированного списка файлов в директории есть удобная функция scandir()...


--------------------
Every time if you use Linux, you are joined to the communism...
практика - критерий истины ... отделенной от нас пропастью субъективного восприятия...
PM MAIL WWW Skype   Вверх
Andrew121
Дата 25.6.2009, 03:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 21.6.2009

Репутация: нет
Всего: 1



DRUID3, Ну это понятно. Но, учитывая тот факт, что изначально в вопрос не была внесена ясность, и, то что челу было просто необходимо пошевелить серым веществом, получилось вот так smile 
Поправь. Выложи.
PM MAIL   Вверх
redwhite90
Дата 16.11.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



а как определить папку или файл я нашёл?
в d_type  - пустота.
PM MAIL   Вверх
bsa
Дата 16.11.2011, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



redwhite90, "пустота" это 0?
PM   Вверх
newbee
Дата 16.11.2011, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



redwhite90, маны?! Маны для кого пишут?!! smile 
Цитата
               unsigned char  d_type;      /* type of file; not supported
                                              by all file system types
 */

Посмотри man 2 stat, там написано как определить тип файла.


--------------------
You're face to face
With man who sold the world
PM   Вверх
redwhite90
Дата 17.11.2011, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



я под линуксом 1 раз программирую.
вот нашёл такой линк только
http://www.bigbiz.com/cgi-bin/manpage?2+stat

ни разу не работал с этим. не поможете?

Добавлено через 1 минуту и 4 секунды
bsa, я делаю вывод на эеран этого типа - а там ничего не выводится абсолютно!
PM MAIL   Вверх
boostcoder
Дата 17.11.2011, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(redwhite90 @  17.11.2011,  12:25 Найти цитируемый пост)
не поможете?

с чем помочь? прочитать за тебя доку?
PM WWW   Вверх
redwhite90
Дата 17.11.2011, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



я перевёл, но так и не нашёл где там тип найденного объекта.

как я понял вся информация в структуре buf.


PM MAIL   Вверх
boostcoder
Дата 17.11.2011, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата

       The following macros are defined to check the file type:

              S_ISLNK(m)  is it a symbolic link?

              S_ISREG(m)  regular file?

              S_ISDIR(m)  directory?

              S_ISCHR(m)  character device?

              S_ISBLK(m)  block device?

              S_ISFIFO(m) fifo?

              S_ISSOCK(m) socket?



m - stat.st_mode

Добавлено через 1 минуту и 51 секунду
example: http://linux.die.net/man/2/stat
PM WWW   Вверх
redwhite90
Дата 17.11.2011, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



на странице приведен такой пример:

Код

#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    struct stat sb;

   if (argc != 2) {
        fprintf(stderr, "Usage: %s <pathname>\n", argv[0]);
        exit(EXIT_FAILURE);
    }

   if (stat(argv[1], &sb) == -1) {
        perror("stat");
        exit(EXIT_FAILURE);
    }

   printf("File type:                ");

   switch (sb.st_mode & S_IFMT) {
    case S_IFBLK:  printf("block device\n");            break;
    case S_IFCHR:  printf("character device\n");        break;
    case S_IFDIR:  printf("directory\n");               break;
    case S_IFIFO:  printf("FIFO/pipe\n");               break;
    case S_IFLNK:  printf("symlink\n");                 break;
    case S_IFREG:  printf("regular file\n");            break;
    case S_IFSOCK: printf("socket\n");                  break;
    default:       printf("unknown?\n");                break;
    }

   printf("I-node number:            %ld\n", (long) sb.st_ino);

   printf("Mode:                     %lo (octal)\n",
            (unsigned long) sb.st_mode);

   printf("Link count:               %ld\n", (long) sb.st_nlink);
    printf("Ownership:                UID=%ld   GID=%ld\n",
            (long) sb.st_uid, (long) sb.st_gid);

   printf("Preferred I/O block size: %ld bytes\n",
            (long) sb.st_blksize);
    printf("File size:                %lld bytes\n",
            (long long) sb.st_size);
    printf("Blocks allocated:         %lld\n",
            (long long) sb.st_blocks);

   printf("Last status change:       %s", ctime(&sb.st_ctime));
    printf("Last file access:         %s", ctime(&sb.st_atime));
    printf("Last file modification:   %s", ctime(&sb.st_mtime));

   exit(EXIT_SUCCESS);
}


у меня наверное глупые вопросы возникли.
 Как я понял информационная структура тут stat.
надо написать stat(полный путь к файлу/папке,ссылка на экземпляр структуры)и то, что это действитетьно папка проверяется if( (sb.st_mode & S_IFMT) ==S_IFDIR  )???

извините, что так подробно спрашиваю. Просто нет линукса сейчас под рукой - будет только непосредственно перед тем, как показать надо будет работу. поэтому хочу быть уверен, что всё заработает.
PM MAIL   Вверх
redwhite90
Дата 17.11.2011, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



извините за навящивость. есть ещё 1 вопрос.
можно проверить соотвествует ли название файла заданной маске?
PM MAIL   Вверх
bsa
Дата 18.11.2011, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



да. можно.
еще вопросы?  smile 
PM   Вверх
redwhite90
Дата 18.11.2011, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



bsa, будут.

1.как это сделать?


 2.В моей программе я сделал следующее: Захожу в папку - делаю цикл по объектам этой папки
добавляю папку в список
Код

if( (sb.st_mode & S_IFMT) ==S_IFDIR  )

            шарюсь по внутренней папке рекурсивно, вызывая описываемую функцию
но у меня возникает fragmentation failed
Это происходит из-за того что программа пытается зайти в файл.Такое происходит с файлами без расширений как я понял.

вопрос: из-за чего это происходит, ведь стоит условие
Код

if( (sb.st_mode & S_IFMT) ==S_IFDIR  )


как это исправить?
PM MAIL   Вверх
redwhite90
Дата 18.11.2011, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



user posted image

Это сообщение отредактировал(а) redwhite90 - 18.11.2011, 22:28
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1660 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.