Функция sysconf()
выдает такой тип системной информации, которая для одного и того же исполняемого файла в различных системах может отличаться и которую невозможно узнать во время компиляции.
#include
long sysconf (int);
Целочисленный аргумент в sysconf()
— это один из наборов макросов с префиксом _SC_
. Ниже перечислены макросы, которые используются чаще всего.
_SC_CLK_TCK | Возвращает количество тактов в секунду внутренних часов ядра, различаемое программами. Следует отметить, что ядро может содержать одни или больше часов, работающих на более высокой частоте. _SC_CLK_TCK обеспечивает подсчет тактов, которые используются для получения информации из ядра, и этот макрос не является индикатором времени ожидания системы. |
_SC_STREAM_MAX | Возвращает максимальное количество стандартных потоков ввода-вывода С, которые могут быть одновременно открыты в системе. |
_SC_ARG_MAX | Возвращает максимальную длину аргумента командной строки и переменных окружения в байтах, которые используются любой из функций exec() . Если это ограничение превышено, exec() вернет ошибку Е2ВIG . |
_SC_OPEN_MAX | Возвращает максимальное количество файлов, которые одновременно могут быть открыты процессом; это то же самое, что и программное ограничение RLIMIT_NOFILE , которое может быть запрошено функцией getrlimit() и установлено функцией setrlimit() . Это единственное значение sysconf() , которое может изменяться во время выполнения программы; при вызове setrlimit() для изменения ограничения RLIMIT_NOFILE . _SC_OPEN_MAX также подчиняется новому программному ограничению. |
_SC_PAGESIZE или _SC_PAGE_SIZE | Возвращает размер одной страницы в байтах. В системах, которые могут поддерживать разные размеры страниц, возвращается размер одной обычной страницы, для которой выделено определенное количество памяти и которая считается естественным размером страниц для конкретной системы. |
_SC_LINE_MAX | Возвращает максимальную длину в байтах входной строки, обрабатываемой текстовыми утилитами, включая завершающий символ новой строки. Следует отметить, что во многих утилитах GNU, используемых в Linux-системах, фактически нет жестко закодированной максимальной длины строки, потому могут применяться входные строки произвольной длины. Однако переносимая программа не должна вызывать текстовые утилиты для строк, длина которых превышает _SC_LINE_MAX ; во многих Unix-системах утилиты работают с фиксированным максимальным размером строки, и его превышение может привести к неопределенным результатам. |
_SC_NGROUPS_MAX | Возвращает количество дополнительных групп (см. главу 10), которые может иметь процесс. |
6.2.3. Поиск и настройка базовой системной информации