dircntl()

Обеспечить контроль над открытой директорией

Прототип:

#include <dirent.h>
int dircntl( DIR *dir,
int cmd,
... );

Аргументы:

dir
Директория, для которой необходимо обеспечить контроль.
cmd
В <dirent.h> определены как минимум следующие значения:
D_GETFLAG
Получить флаги, связанные с директорией, на которую ссылается dir. Для дополнительной информации смотрите раздел “Флаги” ниже.
D_SETFLAG
Установить флаги, связанные с директорией, на которую ссылается dir, в значение, передаваемое в качестве дополнительного аргумента. Новое значение может быть любой комбинацией флагов, описанных в разделе "Флаги" ниже.

Библиотека:

libc

Описание:

Функция dircntl() обеспечивает контроль для открытой директории, на которую ссылается аругмент dir. Эта функция ведет себя аналогично функции управления файлами fcntl().

Флаги:

D_FLAG_FILTER
Отфильтровывает повторяющиеся имена элементов, которые могут возникнуть при объединении файловой системы во время операции readdir().
D_FLAG_STAT
Сообщает серверам, что они должны попытаться вернуть дополнительную информацию stat() (смотрите информацию struct stat) как часть операции readdir().

Возвращаемое значение:

cmd равно D_GETFLAG
Флаги ассоциируются с директорией. Если возникла ошибка, функция возвращает -1, код ошибки записывается в errno.
cmd равно D_SETFLAG
В случае успеха возвращается 0. Если возникла ошибка, функция возвращает -1, код ошибки записывается в errno.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
int main( int argc, char **argv )
{
DIR *dp;
int ret;
if ( !(dp = opendir( "/" )) )
{
exit( EXIT_FAILURE );
}
/* Display the flags that are set on the directory by default*/
if ( (ret = dircntl( dp, D_GETFLAG )) == -1 )
{
exit( EXIT_FAILURE );
}
if ( ret & D_FLAG_FILTER )
{
printf( "Directory names are filtered\n" );
} else {
printf( "Directory names are not filtered\n" );
}
if ( ret & D_FLAG_STAT )
{
printf( "Servers asked for extra stat information\n" );
} else {
printf( "Servers not asked for extra stat information\n" );
}
closedir( dp );
return (0);
}

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

struct stat, fcntl(), opendir(), readdir()




Предыдущий раздел: Описание API системной библиотеки