Марк Митчелл - Программирование для Linux. Профессиональный подход

Тут можно читать онлайн Марк Митчелл - Программирование для Linux. Профессиональный подход - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Вильямс, год 2002. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование для Linux. Профессиональный подход
  • Автор:
  • Жанр:
  • Издательство:
    Вильямс
  • Год:
    2002
  • Город:
    Москва
  • ISBN:
    5-8459-0243-6
  • Рейтинг:
    3.6/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Марк Митчелл - Программирование для Linux. Профессиональный подход краткое содержание

Программирование для Linux. Профессиональный подход - описание и краткое содержание, автор Марк Митчелл, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Данная книга в основном посвящена программированию в среде GNU/Linux. Авторы применяют обучающий подход, последовательно излагая самые важные концепции и методики использования расширенных возможностей системы GNU/Linux в прикладных программах. Читатели научатся писать программы, к интерфейсу которых привыкли пользователи Linux; освоят такие технологии, как многозадачность, многопотоковое программирование, межзадачное взаимодействие и взаимодействие с аппаратными устройствами; смогут улучшить свои программы, сделав их быстрее, надежнее и безопаснее; поймут особенности системы GNU/Linux, ее ограничения, дополнительные возможности и специфические соглашения.

Книга предназначена для программистов, уже знакомых с языком С и имеющих базовый опыт работы в GNU/Linux.

Программирование для Linux. Профессиональный подход - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование для Linux. Профессиональный подход - читать книгу онлайн бесплатно, автор Марк Митчелл
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

В большинстве интерпретаторов команд код завершения последней выполненной программы содержится в специальной переменной $?. В показанном ниже примере программа lsвызывается дважды, и оба раза запрашивается код ее завершения. В первом случае программа завершается корректно и возвращает нулевой код, во втором случае она сталкивается с ошибкой (указанный в командной строке файл не найден), поэтому код завершения оказывается ненулевым:

% ls /

bin coda etc lib misc nfs proc sbin usr

boot dev home lost+found mnt opt root tmp var

% echo $?

0

% ls bogusfile

ls: bogusfile: No such file or directory

% echo $?

1

Программа, написанная на языке С или C++, указывает код завершения в операторе returnв функции main(). Есть и другие методы задания кодов завершения. Они обсуждаются в главе 3, "Процессы". Например, программе назначается определенный код, когда она завершается аварийно (вследствие получения сигнала).

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(), объявленная в файле . В качестве аргумента она принимает имя переменной и возвращает се значение в строковом виде или NULL, если переменная не определена в данной среде. Для установки и сброса значений переменных среды предназначены функции setenv()и unsetenv()соответственно.

Получить список всех переменных среды немного сложнее. Для этого нужно обратиться к специальной глобальной переменной environ, определенной в GNU-библиотеке языка С. Данная переменная имеет тип char**и представляет собой массив указателей на символьные строки, последним элементом которого является NULL. Каждая строка имеет вид ПЕРЕМЕННАЯ = значение .

Программа, представленная в листинге 2.3, отображает всю свою среду, просматривая в цикле массив environ.

Листинг 2.3. ( print-env.c ) Вывод переменных среды

#include

/* Массив ENVIRON содержит среду выполнения. */

extern char** environ;

int main() {

char** var;

for (var = environ; *var != NULL; ++var)

printf("%s\n", *var);

return 0;

}

He пытайтесь модифицировать массив environсамостоятельно. Пользуйтесь для этих целей функциями setenv()и unsetenv().

Обычно при запуске программа получает копию среды своей родительской программы (интерпретатора команд, если она была запущена пользователем). Таким образом, программы, запущенные из командной строки, могут исследовать среду интерпретатора команд.

Переменные среды чаще всего используют для передачи программам конфигурационной информации. Предположим, к примеру, что требуется написать программу, подключающуюся к серверу Internet. Имя сервера может задаваться в командной строке, но, если оно меняется нечасто, имеет смысл определить специальную переменную среды — скажем, SERVER_NAME, — которая будет хранить имя сервера. При отсутствии переменной программа берет имя, заданное по умолчанию. Интересующая нас часть программы показана в листинге 2.4.

Листинг 2.4. ( client.с ) Часть сетевой клиентской программы

#include

#include

int main() {

char* server_name = getenv("SERVER_NAME");

if (server_name == NULL)

/* переменная среды SERVER_NAME не задана. Используем

установки по умолчанию. */

server_name = "server.my-company.com";

printf("accessing server %s\n", server_name);

/* Здесь осуществляется доступ к серверу... */

return 0;

}

Допустим, программа называется client. Если переменная SERVER_NAMEне задана, используется имя сервера, заданное по умолчанию:

% client

accessing server server.my-company.com

Вот как задается другой сервер:

% export SERVER_NAME=backup-server.elsewhere.net

% client

accessing server backup-server.elsewhere.net

2.1.7. Временные файлы

Иногда программе требуется создать временный файл, например для промежуточного хранения большого объема данных или для передачи данных другой программе. В системах GNU/Linux временные файлы хранятся в каталоге /tmp. Работая с временными файлами, необходимо помнить о следующих ловушках.

■ Одновременно может быть запущено несколько экземпляров программы (одним и тем же пользователем или разными пользователями). Все они должны использовать разные имена временных файлов, чтобы не было конфликтов.

■ Права доступа к временным файлам должны задаваться таким образом, чтобы неавторизованные пользователи не могли влиять на работу программы путем модификации или замены временного файла.

■ Имена временных файлов должны генерироваться так, чтобы посторонние пользователи не могли их предугадать. В противном случае хакер может воспользоваться задержкой между проверкой факта использования данного имени файла и открытием нового временного файла.

В Linux имеются функции mkstemp()и tmpfile(), решающие все вышеперечисленные проблемы. Выбор между ними делается на основании того, должен ли временный файл передаваться другой программе и какие функции ввода-вывода будут применяться при работе с файлом: низкоуровневые ( read(), write()и т.д.) или потоковые ( fopen(), fprintf()и т.д.).

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


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

Марк Митчелл - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программирование для Linux. Профессиональный подход отзывы


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


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x