Linux программирование в примерах | страница 44



> ...

>}

Затем можно использовать >envp также, как >environ. Хотя это иногда можно увидеть в старом коде, мы не рекомендуем такое использование; >environ является официальным, стандартным, переносимым способом получения доступа ко всему окружению, если это вам необходимо.

2.4.3. GNU >env

Чтобы завершить главу, рассмотрим GNU версию команды >env. Эта команда добавляет переменные к окружению в ходе выполнения одной команды. Она может использоваться также для очищения окружения в ходе этой команды или для удаления отдельных переменных окружения. Программа обеспечивает нас двойной функциональностью, поскольку проявляет возможности как >getopt_long(), так и несколько других возможностей, обсуждавшихся в этом разделе. Вот как вызывается программа:

>$ env --help

>Usage: env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]

>/* Устанавливает соответствующее VALUE для каждого NAME и запускает COMMAND */

>-i, --ignore-environment /* запустить с пустым окружением */

>-u, --unset=NAME         /* удалить переменную из окружения */

>--help                   /* показать этот экран справки и выйти */

>--version                /* вывести информацию о версии и выйти */

>/* Простое - предполагает -1. Если не указана COMMAND, отображает

>   имеющееся окружение.

>Об ошибках сообщайте в . */

Вот несколько примеров вызовов команды:

>$ env - myprog arg1 /* Очистить окружение, запустить программу с args */

>$ env - РАТН=/bin:/usr/bin myprog arg1 /* Очистить окружение, добавить PATH, запустить программу */

>$ env -u IFS PATH=/bin:/usr/bin myprog arg1 /* Сбросить IFS, добавить PATH, запустить программу */

Код начинается со стандартной формулировки авторских прав GNU и разъясняющего комментария. Мы для краткости их опустили. (Формулировка авторского права обсуждается в Приложении С «Общедоступная лицензия GNU». Показанного ранее вывода >--help достаточно для понимания того, как работает программа.) За объявленным авторским правом и комментарием следуют подключаемые заголовочные файлы и объявления. Вызов макроса '>N_("string")' (строка 93) предназначен для использования при локализации программного обеспечения, тема, освещенная в главе 13 «Интернационализация и локализация». Пока вы можете рассматривать его, как содержащий строковую константу.

>80  #include

>81  #include

>82  #include

>83  #include

>84  #include

>85

>86  #include "system.h"

>87  #include "error.h"