rewinddir()

Вернуть поток директории в начало директории

Прототип:

#include <sys/types.h>
#include <dirent.h>
void rewinddir( DIR *dirp );

Аргументы:

dirp
Указатель на поток каталога, который нужно перемотать.

Библиотека:

libc

Описание:

Функция rewinddir() перематывает поток каталога, указанный в dirp, в начало каталога. Поток каталога будет ссылаться на текущее состояние каталога, как если бы вызывающий поток снова вызвал opendir().


Note: Результат использования потока каталога после вызовов одного из семейств функций 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 системной библиотеки