My-library.info
Все категории

Linux программирование в примерах - Роббинс Арнольд

На электронном книжном портале my-library.info можно читать бесплатно книги онлайн без регистрации, в том числе Linux программирование в примерах - Роббинс Арнольд. Жанр: Интернет год 2004. В онлайн доступе вы получите полную версию книги с кратким содержанием для ознакомления, сможете читать аннотацию к книге (предисловие), увидеть рецензии тех, кто произведение уже прочитал и их экспертное мнение о прочитанном.
Кроме того, в библиотеке онлайн my-library.info вы найдете много новинок, которые заслуживают вашего внимания.

Название:
Linux программирование в примерах
Дата добавления:
17 сентябрь 2020
Количество просмотров:
216
Читать онлайн
Linux программирование в примерах - Роббинс Арнольд

Linux программирование в примерах - Роббинс Арнольд краткое содержание

Linux программирование в примерах - Роббинс Арнольд - описание и краткое содержание, автор Роббинс Арнольд, читайте бесплатно онлайн на сайте электронной библиотеки My-Library.Info

В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.

 

Linux программирование в примерах читать онлайн бесплатно

Linux программирование в примерах - читать книгу онлайн бесплатно, автор Роббинс Арнольд

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("%sn", environ[i]);

 return 0;

}

Хотя это и маловероятно, перед попыткой использовать

environ
эта программа проверяет, что она не равна
NULL
.

Переменные хранятся в окружении в случайном порядке. Хотя некоторые оболочки Unix хранят переменные окружения в отсортированном по именам переменных виде, это формально не требуется, и многие оболочки не сортируют их.

В качестве уловки реализации можно получить доступ к окружению, объявив третий параметр

main()
:

int main(int argc, char **argv, char **envp) {

 ...

}

Затем можно использовать

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, отображает

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

Об ошибках сообщайте в <[email protected]>. */

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

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

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

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

Код начинается со стандартной формулировки авторских прав GNU и разъясняющего комментария. Мы для краткости их опустили. (Формулировка авторского права обсуждается в Приложении С «Общедоступная лицензия GNU». Показанного ранее вывода

--help
достаточно для понимания того, как работает программа.) За объявленным авторским правом и комментарием следуют подключаемые заголовочные файлы и объявления. Вызов макроса '
N_(&quot;string&quot;)
' (строка 93) предназначен для использования при локализации программного обеспечения, тема, освещенная в главе 13 «Интернационализация и локализация». Пока вы можете рассматривать его, как содержащий строковую константу.

80  #include &lt;config.h&gt;

81  #include &lt;stdio.h&gt;

82  #include &lt;getopt.h&gt;

83  #include &lt;sys/types.h&gt;

84  #include &lt;getopt.h&gt;

85

86  #include &quot;system.h&quot;

87  #include &quot;error.h&quot;

88  #include &quot;closeout.h&quot;

89

90  /* Официальное имя этой программы (напр., нет префикса 'g'). */

91  #define PROGRAM_NAME &quot;env&quot;

92

93  #define AUTHORS N_ (&quot;Richard Mlynarik and David MacKenzie&quot;)

94

95  int putenv();

96

97  extern char **environ;

98

99  /* Имя, посредством которого эта программа была запущена. */

100 char *program_name;

101

102 static struct option const longopts[] =

103  {


Роббинс Арнольд читать все книги автора по порядку

Роббинс Арнольд - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки My-Library.Info.


Linux программирование в примерах отзывы

Отзывы читателей о книге Linux программирование в примерах, автор: Роббинс Арнольд. Читайте комментарии и мнения людей о произведении.

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.