mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

DIRECTORY(3X)                                     DIRECTORY(3X)

НАЗВАНИЕ 
        directory:   opendir,   readdir,   telldir,    seekdir,
        rewinddir, closedir - операции над каталогами

СИНТАКСИС 
        #include 
        #include 
        
        DIR *opendir (filename)
        char *filename;
        
        struct dirent *readdir (dirp)
        DIR *dirp;
        
        long telldir (dirp)
        DIR *dirp;
        
        void seekdir (dirp, loc)
        DIR *dirp;
        long loc;
        
        void rewinddir (dirp)
        DIR *dirp;
        
        void closedir (dirp)
        DIR *dirp;

ОПИСАНИЕ 
        Функция opendir открывает каталог с именем  filename  и
        связывает  с  ним  поток каталога. Opendir возвращает в
        качестве результата указатель, который  используется  в
        последующих  операциях для идентификации потока катало-
        га. Пустой указатель возвращается, если  файл  filename
        не доступен или не является каталогом, либо,  если  ко-
        манда  malloc(1M) не может выделить достаточного объема
        памяти для структуры типа DIR или для буферов.

        Функция  readdir выдает указатель на следующий активный
        элемент каталога. Указатели на неактивные элементы  ка-
        талога  не  выдаются. При достижении конца каталога или
        при выявлении некорректной позиции в каталоге возвраща-
        ется пустой указатель.

        Функция telldir выдает текущую позицию в указанном  по-
        токе каталога.

        Функция  seekdir  устанавливает позицию для последующей
        операции readdir над потоком каталога.  Данная  позиция
        совпадает с той, которая была получена в результате вы-
        полнения  операции  telldir, вычислившей loc. Значения,
        которые возвращает telldir, корректны только в том слу-
        чае, если каталог не сжимался и  не  расширялся.  Такая
        проблема  не возникает в случае версии 5, но может воз-
        никнуть для некоторых других типов файловых систем.

        Операция rewinddir переустанавливает в начало позицию в
        указанном потоке каталога.

        Операция closedir  закрывает указанный поток каталога и
        освобождает структуру DIR.

        При выполнении перечисленных операций могут  возникнуть
        следующие ошибки:

        opendir:

        [ENOTDIR]   Компонент маршрутного имени filename не яв-
                    ляется каталогом.

        [EACCES]    Для  компонента  маршрутного имени filename
                    отсутствует право на поиск.

        [EMFILE]    Будет превышено максимально допустимое чис-
                    ло описателей файлов.

        [EFAULT]    Аргумент  filename указывает за пределы от-
                    веденного процессу адресного пространства.

        readdir:

        [ENOENT]    Текущая позиция каталога  не  соответствует
                    корректному элементу.

        [EBADF]     Описатель  файла,  определенный  аргументом
                    dirp,  в данный момент некорректен. Возмож-
                    ная причина - поток был закрыт.

        telldir, seekdir и closedir:

        [EBADF]     Описатель  файла,  определенный  аргументом
                    dirp,  в данный момент некорректен. Возмож-
                    ная причина - поток был закрыт.

ПРИМЕР 
        Приведем  фрагмент программы для поиска в каталоге эле-
        мента name:

             dirp = opendir (".");
             while ((dp = readdir (dirp)) != NULL)
               if (strcmp (dp->d_name, name) == 0) {
                 closedir (dirp);
                 return FOUND;
               }
             closedir (dirp);
             return NOT_FOUND;

СМ. ТАКЖЕ 
        getdents(2), dirent(4).

ПРЕДОСТЕРЕЖЕНИЯ 
        Rewinddir реализован как макрос, поэтому к нему  нельзя
        применить операцию вычисления адреса функции.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк