Получить строковую переменную, зависящую от конфигурации
#include <unistd.h>size_t confstr( int name,char *buf,size_t len );
libc
Функция confstr() дает возможность приложению получать или устанавливать конфигурационно определяемые строковые значения. Поведение функции похоже на функцию sysconf(), но можно получить значение в виде строки, а не числового значения. По умолчанию функция запрашивает и возвращает значения в системе.
Аргумент name представляет запрашиваемую системную переменную. Значения определены в <confname.h>
; допустимы как минимум следующие значения name:
![]() | Имя узла может содержать только буквы, цифры и дефисы, при этом оно не должно начинаться или заканчиваться дефисом. Для дополнительной информации смотрите RFC 952. |
LD_LIBRARY_PATH
, которое содержит пути к стандартным библиотекам. PATH
, которое содержит пути к стандартным утилитам. resolv.conf
, исключая доменное имя. TZ
) Конфигурационно определяемое значение возвращается в буфер, на который указывает buf, и имеет длину не более len байтов, включая завершающий NULL
.
Чтобы найти длину конфигурационно определяемого значения, нужно вызвать confstr() с buf, установленным в NULL
, и len, установленным в 0
.
Для установки конфигурационно определяемого значения:
_CS_HOSTNAME
) и _CS_SET
. NULL
. 0
. Можно сравнить возвращенное confstr() значение с len чтобы определить, было ли усечено возвращенное значение при получении (этого нельзя сделать при установке значения).
Вывести информацию, аналогичную той, что возвращает функция uname():
#include <unistd.h>#include <stdio.h>#include <limits.h>#define BUFF_SIZE (256 + 1)int main( void ){char buff[BUFF_SIZE];if ( confstr( _CS_SYSNAME, buff, BUFF_SIZE ) > 0 ){printf( "System name: %s\n", buff );}if ( confstr( _CS_HOSTNAME, buff, BUFF_SIZE ) > 0 ){printf( "Host name: %s\n", buff );}if ( confstr( _CS_RELEASE, buff, BUFF_SIZE ) > 0 ){printf( "Release: %s\n", buff );}if ( confstr( _CS_VERSION, buff, BUFF_SIZE ) > 0 ){printf( "Version: %s\n", buff );}if ( confstr( _CS_MACHINE, buff, BUFF_SIZE ) > 0 ){printf( "Machine: %s\n", buff );}if ( confstr( _CS_SET | _CS_HOSTNAME, "myhostname", 0 ) != 0 ){printf( "Hostname set to: %s\n", "myhostname" );}return (0);}
POSIX 1003.1
Функция confstr() является частью проекта стандарта; ее интерфейс и/или поведение может поменяться в будущем.
getconf, setconf в Справочнике по Утилитам
Предыдущий раздел: Описание API системной библиотеки