Книга: Программирование для Linux. Профессиональный подход
2.1.6. Среда выполнения
2.1.6. Среда выполнения
Операционная система Linux предоставляет каждой запущенной программе среду выполнения. Под средой подразумевается совокупность пар переменная-значение. Имена переменных среды и их значения являются строками. По существующему соглашению переменные среды записываются прописными буквами.
Некоторые переменные должны быть знакомы большинству читателей, например:
? USER
— содержит имя текущего пользователя;
? HOME
— содержит путь к начальному каталогу текущего пользователя;
? PATH
— содержит разделенный двоеточиями список каталогов, которые операционная система просматривает в поиске вызванной программы;
? DISPLAY
— содержит имя и номер экрана сервера X Window, на котором отображаются окна графических программ.
Интерпретатор команд, как и любая другая программа, располагает своей средой. Имеются средства просмотра и редактирования переменных среды из командной строки. Например, программа printenv
отображает текущую среду интерпретатора. В разных интерпретаторах есть свой встроенный синтаксис работы с переменными среды. Ниже демонстрируется синтаксис интерпретаторов семейства Bourne shell.
? Интерпретатор автоматически создает локальную переменную (называемую переменной интерпретатора) для каждой обнаруживаемой им переменной среды. Благодаря этому возможен доступ к переменным среды через выражения вида $переменная
. Например:
% echo $USER
samuel
% echo $HOME
/home/samuel
? С помощью команды export
можно экспортировать переменную интерпретатора в переменную среды. Вот как, например, задается значение переменной EDITOR
:
% EDITOR=emacs
% export EDITOR
Или короче:
% export EDITOR=emacs
В программе доступ к переменным среды осуществляет функция getenv()
, объявленная в файле <stdlib.h>
. В качестве аргумента она принимает имя переменной и возвращает се значение в строковом виде или NULL
, если переменная не определена в данной среде. Для установки и сброса значений переменных среды предназначены функции setenv()
и unsetenv()
соответственно.
Получить список всех переменных среды немного сложнее. Для этого нужно обратиться к специальной глобальной переменной environ
, определенной в GNU-библиотеке языка С. Данная переменная имеет тип char**
и представляет собой массив указателей на символьные строки, последним элементом которого является NULL
. Каждая строка имеет вид ПЕРЕМЕННАЯ=значение
.
Программа, представленная в листинге 2.3, отображает всю свою среду, просматривая в цикле массив environ
.
- 1.3.2 Среда выполнения процессов
- Пользовательская среда UNIX
- Среда с управлением памятью
- .NET Compact Framework — среда выполнения управляемого кода для устройств
- Различные подходы к реализации пользовательских интерфейсов в управляемых средах выполнения
- Общеязыковая среда выполнения
- 5.4 Команда trap: обработка прерываний
- 13.3.1. Пакетный ввод
- Глава 3 Возможности интерпретатора shell
- Одномодульные и многомодульные компоновочные блоки