Статья: Теория вычислительных процессов и структур
int closedir( DIR *dirptr);
Пример вызова:
if ((d= opendir (“/home/s1”))==NULL) /* ошибка открытия */ exit(1);
Передаваемый вызову opendir параметр является именем открываемого каталога. При успешном открытии каталога dirname вызов opendir возвращает указатель на переменную типа DIR. Определение типа DIR, представляющего дескриптор открытого каталога, находится в заголовочном файле “dirent.h”.
В частности, поле name структуры DIR содержит запись имени файла, содержащегося в каталоге:
DIR *d;
ff=d->name ;
printf(“%s\n”, ff);
Указатель позиции ввода/вывода после открытия каталога устанавливается на первую запись каталога. При неуспешном открытии функция возвращает значение NULL. После завершения работы с каталогом необходимо его закрыть вызовом closedir.
Для чтения записей каталога существует вызов:
struct dirent *readdir(DIR *dirptr);
Пример вызова:
DIR *dp;
struct dirent *d;
d=readdir(dp);
При первом вызове функции readdir в структуру dirent будет считана первая запись каталога. После прочтения всего каталога в результате последующих вызовов readdir будет возвращено значение NULL.
Для возврата указателя в начало каталога на первую запись существует вызов:
void rewindir(DIR *dirptr);
Чтобы получить имя текущего рабочего каталога существует функция:
char *getcwd(char *name, size_t size);
В переменную name при успешном вызове будут помещено имя текущего рабочего каталога:
char name1[255];
if (getcwd(name1, 255)==NULL) perror(“ошибка вызова”)
else printf(“текущий каталог=%s”,name1);
Вызов:
int chdir(const char *path);
изменяет текущий рабочий каталог на каталог path.
Системные вызовы stat и fstat позволяют процессу определить значения свойств в существующем файле:
#include <sys/types.h>