LINUX.ORG.RU

С помощью функций opendir, readdir(3), closedir

Пример: ( обработка ошибок отсутсвует ):


--------------------

#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>

int 
main ( int argc, char* argv[] )
{
     DIR  *dir = opendir( argv[ 1 ] ) ;
     struct dirent *dent ;
     while ( ( dent = readdir( dir ) ) != 0 )
     {
         printf( "%s\n", dent->d_name ) ;
     }
     closedir( dir ) ;
}

omerm
()
Ответ на: комментарий от Nefer

man scandir может быть и неплохо, но сам scandir - ужасен. 

Поясню: Что делает скандир? Скандир аллоцирует массив и заполняет его
указателями на dirent'ы. После чего необходимо освобождать выделенную
память руками. Т.е. выделение памяти в одном месте, а освобождение -
в другом. Прямая дорога к бугам.

Далее. Предположим что мы используем потоки ( threads, not streams ).
scandir - не reentrant, и reentrant версии для него нетути. А вот 
для readdir есть readdir_r. Документации по нему на Линуксе, конечно
же нет, но функция есть.

omerm
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.