2.4.2. Окружение в целом: environ
2.4.2. Окружение в целом: environ
Правильным способом работы с окружением является использование функций, описанных в предыдущем разделе. Однако, стоит взглянуть на то, как это работает «под капотом».
Внешняя переменная environ предоставляет доступ таким же способом, как argv предоставляет доступ к аргументам командной строки. Вы сами должны объявить переменную. Хотя она и стандартизирована POSIX, environ намеренно не объявлена ни в одном стандартном заголовочном файле (Это, кажется, прослеживается из исторической практики.) Вот объявление:
extern char **environ; /* Смотрите, нет заголовочного файла POSIX */
Как и в argv, завершающим элементом environ является NULL. Однако, здесь нет переменной «числа строк окружения», которая соответствовала бы argc. Следующая простая программа распечатывает все окружение:
/* ch02-printenv.c --- Распечатать окружение. */
#include <stdio.h>
extern char **environ;
int main(int argc, char **argv) {
int i;
if (environ != NULL)
for (i = 0; environ[i] != NULL; i++)
printf("%s ", environ[i]);
return 0;
}
Хотя это и маловероятно, перед попыткой использовать environ эта программа проверяет, что она не равна NULL.
Переменные хранятся в окружении в случайном порядке. Хотя некоторые оболочки Unix хранят переменные окружения в отсортированном по именам переменных виде, это формально не требуется, и многие оболочки не сортируют их.
В качестве уловки реализации можно получить доступ к окружению, объявив третий параметр main():
int main(int argc, char **argv, char **envp) {
...
}
Затем можно использовать envp также, как environ. Хотя это иногда можно увидеть в старом коде, мы не рекомендуем такое использование; environ является официальным, стандартным, переносимым способом получения доступа ко всему окружению, если это вам необходимо.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 9 Системное окружение Linux
Глава 9 Системное окружение Linux В этой главе рассматривается процесс запроса системных служб, включая низкоуровневые средства ядра и высокоуровневые возможности
9.1. Окружение процесса
9.1. Окружение процесса Как подробно описано в главе 10, в каждом выполняющемся процессе есть переменные окружения. Переменные окружения представляют собой пары "имя-значение", и некоторые из них представляют ценность для программистов на языке С. (Многие переменные в
5.6. Параметры и переменные. Окружение оболочки
5.6. Параметры и переменные. Окружение оболочки Понятие параметра в оболочке bash подобно понятию переменной в обычных языках программирования. Именем (или идентификатором) параметра может быть слово, состоящее из алфавитных символов, цифр и знаков подчеркивания (только
Окружение
Окружение Окружение системы образуют все факторы, которые сами по себе фактически не являются частью сервера, но тем не менее играют важную роль в формировании ожидаемых от системы надежности и качества. Электропитание, температура и влажность помещения, источники
Окружение
Окружение Следующий стратегический момент, который я хочу до вас довести. Хотите стать успешным в бизнесе – найдите возможность регулярно общаться с успешными людьми. Лучше всего завести себе друзей бизнесменов и миллионеров. Итак, вам надо изыскивать возможности
Окружение и атмосферные эффекты
Окружение и атмосферные эффекты Использование Environment (Окружающая среда) и Effects (Эффекты) позволяет создавать общее настроение, повышая реалистичность сцены. Элементы управления атмосферой предлагают широкий набор эффектов, включая туман, дымку, огонь, дым и т. д.Окно
Сокрытие пиктограммы Сетевое окружение на Рабочем столе
Сокрытие пиктограммы Сетевое окружение на Рабочем столе Ключ:[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer] Значение:
8.5. Окружение и атмосферные эффекты
8.5. Окружение и атмосферные эффекты Использование Environment (Окружающая среда) и Effects (Эффекты) позволяет создавать общее настроение, повышая реалистичность сцены. Элементы управления атмосферой предлагают широкий набор эффектов, включая туман, дымку, огонь, дым и т. д.Окно
SMS: А в целом - фигня
SMS: А в целом - фигня Подведем итоги SMS-рейтинга материалов в последних пяти номерах. Промежуточных оценок немного, в основном двойки (единицы) и пятерки. Некоторые статьи попали в разные группы одновременно.ПятеркаАлексей Коновалов, «Хладокомбинат»Бёрд Киви, «Битва
Изящество линии: что может стать «двигателем» бытовой электроники и ИТ-индустрии в целом в ближайшее время? Михаил Ваннах
Изящество линии: что может стать «двигателем» бытовой электроники и ИТ-индустрии в целом в ближайшее время? Михаил Ваннах Опубликовано 02 июля 2013 Есть одна греко-римская легенда. Будто бы, когда пылал дворец Юлия Цезаря на Палатине, там погибла
Тревожные прогнозы: рост мирового рынка ИТ отстает от роста мировой экономики в целом Михаил Ваннах
Тревожные прогнозы: рост мирового рынка ИТ отстает от роста мировой экономики в целом Михаил Ваннах Опубликовано 10 июля 2013 Международный валютный фонд (МВФ) — организация, склонная скорее к оптимизму. И особенно интересно смотреть на его прогнозы
4.6.2. Действия с изображением в целом
4.6.2. Действия с изображением в целом Для осуществления действий над изображением в целом не требуется его предварительно выделять, используя инструменты выбора, а если область выделения уже определена, то команда все равно распространяется целиком на всю
Сетевое окружение
Сетевое окружение Честно сказать, словосочетание настораживает. Можно подумать, что нас окружили, да еще с сетями (чтоб точно не сбежали). На самом деле это название системной папки, которая помогает нам работать с сетью. Так, если у вас дома, например, стоят два компьютера
Зеркало цифр: Как соотносится российская отрасль программного обеспечения с состоянием экономики страны в целом? Михаил Ваннах
Зеркало цифр: Как соотносится российская отрасль программного обеспечения с состоянием экономики страны в целом? Михаил Ваннах Опубликовано 26 февраля 2013О том, что в стране весьма динамично и вполне наблюдаемо развивается отрасль экспорта программного обеспечения, мы