Книга: Разработка приложений в среде Linux. Второе издание
6.2.2. Раскрытие возможностей времени выполнения
6.2.2. Раскрытие возможностей времени выполнения
Многие системные возможности имеют ограничения, другие являются необязательными, а некоторые могут содержать связанную с ними информацию. Ограничение на длину строки аргументов, передаваемых новой программе, защищает систему от произвольных запросов памяти, которые в ряде случаев могут вызвать крах системы. Не во всех системах POSIX реализовано управление заданиями. Любая программа может получить сведения о наиболее поздней версии стандарта POSIX, которая реализована в системе.
Функция sysconf()
выдает такой тип системной информации, которая для одного и того же исполняемого файла в различных системах может отличаться и которую невозможно узнать во время компиляции.
#include <unistd.h>
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), которые может иметь процесс. |
- Права для выполнения резервного копирования
- Уменьшение времени, необходимого для резервного копирования и восстановления
- Ограничение времени ожидания для транзакций (Lock timeout)
- Упражнения для самостоятельного выполнения
- 24.1. Расширение возможностей Панели задач
- 1.4.1. Кодирование во время выполнения
- 7.12. Объективизация времени
- Квант времени
- Формула времени. Тайм-менеджмент на Outlook 2013
- Основания для выполнения проекта
- 8.8.11. Мероприятие 12: Раскрытие информации о механизмах агрессивного налогового планирования
- Глава 1 Предел возможностей иерархии в мире перемен