Вернуть поток директории в начало директории
#include <sys/types.h>#include <dirent.h>void rewinddir( DIR *dirp );
libc
Функция rewinddir() перематывает поток каталога, указанный в dirp, в начало каталога. Поток каталога будет ссылаться на текущее состояние каталога, как если бы вызывающий поток снова вызвал opendir().
![]() | Результат использования потока каталога после вызовов одного из семейств функций exec*() или spawn*() не определен. После вызова fork() родительский или дочерний процесс (но не оба) могут продолжить обработку потока каталога, используя функции readdir() и rewinddir(). Если и родительский, и дочерний процессы используют эти функции, результат не определен. Любой (или оба) процесса могут использовать closedir(). |
Перечислить все файлы в каталоге, создать новый файл, а затем снова перечислить содержимое каталога:
#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <dirent.h>#include <stdlib.h>int main( void ){DIR *dirp;struct dirent *direntp;int filedes;dirp = opendir( "/home/fred" );if ( dirp != NULL ){printf( "Old directory listing\n" );for ( ; ; ){direntp = readdir( dirp );if ( direntp == NULL )break;printf( "%s\n", direntp->d_name );}filedes = creat( "/home/fred/file.new", S_IRUSR | S_IWUSR |S_IRGRP | S_IWGRP );close( filedes );rewinddir( dirp );printf( "New directory listing\n" );for ( ; ; ){direntp = readdir( dirp );if ( direntp == NULL )break;printf( "%s\n", direntp->d_name );}closedir( dirp );}return (EXIT_SUCCESS);}
POSIX 1003.1
closedir(), struct dirent opendir(), readdir(), readdir_r(), seekdir()
Предыдущий раздел: Описание API системной библиотеки