pathconf()

Получить значение размера буфера для канала

Прототип:

#include <unistd.h>
long pathconf( const char *path,
int name );

Аргументы:

path
Имя файла, значение размера буфера для канала которого вы хотите получить.
name
Имя буфера для канала.

Библиотека:

libc

Описание:

Функция pathconf() возвращает значение размера буфера для канала, обозначенного в name, которое связано с именем файла, указанным в path.

Размеры буферов для каналов определены в <confname.h>, и включают как минимум следующие значения:

_PC_ASYNC_IO
Определяется, если для файла поддерживается асинхронный ввод-вывод.
_PC_CHOWN_RESTRICTED
Если определено (и не равно -1), то указывает, что использование функции chown(), а также операция изменения идентификатора группы файла на эффективный идентификатор группы процесса или один из его дополнительных идентификаторов группы ограничены процессом с привилегиями root.
_PC_LINK_DIR
Если определено (и не равно -1) файловая система разрешает удаление ссылки на каталог.
_PC_LINK_MAX
Максимальное значение количества ссылок на файл.
_PC_MAX_CANON
Максимальное количество байт в каноническом буфере ввода терминала (буфере редактирования).
_PC_MAX_INPUT
Максимальное количество байт в буфере необработанного ввода терминала.
_PC_NAME_MAX
Максимальное количество байт в имени файла (не включая завершающий нуль).
_PC_NO_TRUNC Если определено (и не равно -1) указывает на то, что использование компонентов пути длиннее, чем значение, заданное _PC_NAME_MAX приведет к ошибке.
_PC_PATH_MAX
Максимальное количество байт в имени пути (не включая завершающий нуль).
_PC_PIPE_BUF
Максимальное количество байт, которое может быть записано атомарно при записи в неименованный канал (pipe).
_PC_PRIO_IO
Если определено (и не равно -1), то для файла поддерживается приоритетный ввод-вывод.
_PC_SYNC_IO
Если определено (и не равно -1), то для файла поддерживается синхронный ввод-вывод.
_PC_VDISABLE Если определено (и не равно -1), то указывает на символьное значение, которое можно использовать для индивидуального отключения специальных управляющих символов в управляющей структуре struct termios.

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

Запрошенное значение размера буфера для канала

Если возникла ошибка функция возвращает -1, код ошибки записывается в errno.

Коды ошибок:

EACCES
В разрешении на поиск отказано для компонента path.
EINVAL
Аргумент name недействителен или указанный буфер не поддерживается.
ELOOP
Слишком много уровней символических ссылок или префиксов пути.
ENAMETOOLONG
Аргумент path или компонент аргумента path слишком длинный.
ENOENT
Файл не существует.
ENOSYS
Функция pathconf() не реализована для файловой системы, указанной в path.
ENOTDIR
Один из компонентов пути к файлу не является каталогом.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main( void )
{
long value;
value = pathconf( "/dev/con1", _PC_MAX_INPUT );
printf( "Input buffer size is %ld bytes\n", value );
return (EXIT_SUCCESS);
}

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

POSIX 1003.1

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

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

chown(), confstr(), errno, fpathconf(), sysconf(), struct termios

getconf в Справочнике по утилитам




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