Реализация Linux конфигурации системы является “переменным” ARG_MAX, отличающимся от других системных переменных, и является этим совместимый POSIX?

Разъяснение вопроса: я предполагаю, что Rox хочет выключить его мониторы, когда он уходит (но оставьте компьютерное выполнение). Это обычно происходит после того, как экранная заставка показала симпатичные шаблоны некоторое время. Используя "xset dpms сила от" команды способ смочь протестировать, если вещи работают, не имея необходимость ожидать полчаса экранной заставки DPMS для умирания. (можно также установить тайм-аут на DPMS прочь действительно короткого, но это - просто другой способ ускорить тестирование).

Я просто протестировал это в своей системе. Это имеет: 01:00.0 VGA совместимый контроллер: Advanced Micro Devices [AMD], урожденный [Radeon HD 3450] ATI RV620 LE и когда я ввожу "xset dpms сила от" обоих шоу мониторов "никакой сигнал" в течение трех секунд и затем поворачиваю ведомый янтарь (т.е. режим ожидания). "это работает на меня"!

Так... Выяснять что случилось в Вашей ситуации: можно ли подкачать мониторы, чтобы проверить, что второй монитор DPMS способный? Если это так, как я ожидаю, это могло бы быть ошибкой. Вероятно, довольно характерный для Вашей микросхемы/программного обеспечения. Вы запускаете последнее программное обеспечение? (например, человечность 12.04).

4
13.04.2017, 15:36
1 ответ

Нет никакого стандартного способа получить список переменных конфигурации, которые поддерживаются в системе. Если Вы программируете для данной версии POSIX, список в той версии спецификации POSIX является Вашим списком ссылок. На Linux, getconf -a списки вся доступная переменная.

fpathconf не характерно для ПУТИ. Именно о переменных, которые связаны с файлами, которые являются теми, может варьироваться от файла до файла.

Относительно ARG_MAX на Linux объяснение для в зависимости от размера стека - то, что аргументы заканчиваются на стеке, таким образом, должно быть достаточно комнаты для них плюс все остальное, что должно соответствовать. Большинство других реализаций (включая более старые версии Linux) имеет фиксированный размер.

Большинство пределов сочетается с доступностью ресурса с различными ресурсами в зависимости от предела. Например, процесс может не мочь открыть файл, даже если он имеет меньше, чем OPEN_MAX открытые файлы, если система вне памяти, которая может использоваться для связанных с файлом данных.

Linux совместим POSIX по этому вопросу по умолчанию, таким образом, я не знаю, где Вы достигаете.

Если Вы используете ulimit -s ограничить размер стека меньше, чем ARG_MAX, Вы делаете систему больше не совместимой. Система POSIX может обычно делаться несовместимой в любом количестве путей, включая PATH=/nowhere (делающий все стандартные недоступные утилиты) или rm -rf /.

Значение ARG_MAX в limits.h обеспечивает минимум, на который могут полагаться приложения. Совместимой POSIX системе позволяют позволить execve успешно выполнитесь, даже если аргументы превышают тот размер. Гарантия, связанная с ARG_MAX это, если аргументы помещаются в тот размер затем execve не перестанет работать должный E2BIG.

3
27.01.2020, 20:58
  • 1
    Очень полезный, спасибо! Страницы справочника не показывают "-a"? То, что я "достигал" в той части Q, - то, которые в моем новичке возражают, я думал, что Вы могли 1 - быть несовместимыми, потому что Вы зашли слишком далеко с макс. несмотря на ясную ссылку на "минимальные допустимые значения" в limits.h документе и 2 - что ARG_MAX, обновляемый для ресурсов во времени выполнения, означал, что limits.h был проигнорирован на Linux; я aslo не учел Q о Варе во время компиляции. Таким образом, практический Q - то, как раз в то самое время, когда Вы даете программу клиенту, делают Вы говорите ему, изменяют limits.h или устанавливают определенный предел стека. Ни один, просто работы с тем, что там! –   23.01.2014, 06:44

Теги

Похожие вопросы