-->

UNIX: разработка сетевых приложений

На нашем литературном портале можно бесплатно читать книгу UNIX: разработка сетевых приложений, Стивенс Уильям Ричард-- . Жанр: ОС и Сети. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
UNIX: разработка сетевых приложений
Название: UNIX: разработка сетевых приложений
Дата добавления: 16 январь 2020
Количество просмотров: 390
Читать онлайн

UNIX: разработка сетевых приложений читать книгу онлайн

UNIX: разработка сетевых приложений - читать бесплатно онлайн , автор Стивенс Уильям Ричард

Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:
ПРИМЕЧАНИЕ

Более новые реализации отключают возможность создания сокета UDP, если она не задана администратором, поскольку если позволить кому угодно отправлять дейтаграммы UDP на этот порт (возможно, заполняя приемный буфер его сокета), это может привести к тому, что законные сообщения не будут получены (атака типа отказ в обслуживании) или переполнится файловая система из-за неограниченного роста журналов.

Между реализациями демона syslogd существуют различия. Например, доменные сокеты Unix используются Беркли-реализациями, а реализации System V используют потоковый драйвер (streams log driver). Различные реализации, происходящие от Беркли, используют для доменных сокетов Unix различные полные имена. Мы можем игнорировать все эти тонкости, если используем функцию syslog.

Мы можем отправлять сообщения о событиях для записи в журнал (log messages) демону

syslogd
из наших демонов, создав дейтаграммный доменный сокет Unix и указывая при отправке полное имя, с которым связан демон, но более простым интерфейсом является функция
syslog
, которую мы описываем в следующем разделе. В качестве альтернативы мы можем создать сокет UDP и отправлять наши сообщения на адрес закольцовки и порт 514.

13.3. Функция syslog

Поскольку у демона нет управляющего терминала, он не может просто вызвать функцию

fprintf
для вывода в стандартный поток сообщений об ошибках (
stderr
). Обычная техника записи в журнал сообщений для демона — это вызов функции
syslog
.

#include <syslog.h>

void syslog(int <i>priority</i>, const char *<i>message</i>, ...);

Хотя эта функция изначально разрабатывалась для BSD, в настоящее время она предоставляется большинством производителей систем Unix. Описание

syslog
в POSIX соответствует тому, что мы пишем здесь. RFC 3164 содержит документацию, касающуюся протокола
syslog
BSD.

Аргумент

priority
— это комбинация аргументов
level
и
facility
, которые мы показываем в табл. 13.1 и 13.2. Дополнительные сведения об этом аргументе можно найти в RFC 3164. Аргумент
message
аналогичен строке формата функции
printf
с добавлением спецификации
%m
, которая заменяется сообщением об ошибке, соответствующим текущему значению переменной
errno
. Символ перевода строки может появиться в конце строки
message
, но он не является обязательным.

Сообщения для журнала имеют значение

level
(уровень) от 0 до 7, что мы показываем в табл. 13.1. Это упорядоченные значения. Если отправитель не задает значение
level
, используется значение по умолчанию
LOG_NOTICE
.

Таблица 13.1. Аргумент level журнальных сообщений

Level Значение Описание
LOG_EMERG 0 Система не может функционировать, экстренная ситуация (наивысший приоритет)
LOG_ALERT 1 Следует немедленно принять меры, срочная ситуация
LOG_CRIT 2 Критическая ситуация
LOG_ERR 3 Состояние ошибки
LOG_WARNING 4 Предупреждение
LOG_NOTICE 5 Необычное, хотя и не ошибочное состояние (значение аргумента level по умолчанию)
LOG_INFO 6 Информационное сообщение
LOG_DEBUG 7 Отладочные сообщения (низший приоритет)

Сообщения также содержат аргумент

facility
для идентификации типа процесса, посылающего сообщение. Мы показываем его различные значения в табл. 13.2. Если не задано значение аргумента
facility
, используется его значение по умолчанию —
LOG_USER
.

Таблица 13.2. Аргумент facility журнальных сообщений

facility Описание
LOG_AUTH Сообщения no безопасности/авторизации
LOG_AUTHPRIV Сообщения по безопасности/авторизации (частные)
LOG_CRON Демон cron
LOG_DAEMON Системные демоны
LOG_FTP Демон FTP
LOG_KERN Сообщения ядра
LOG_LOCAL0 Локальное использование
LOG_LOCAL1 Локальное использование
LOG_LOCAL2 Локальное использование
LOG_LOCAL3 Локальное использование
LOG_LOCAL4 Локальное использование
LOG_LOCAL5 Локальное использование
LOG_LOCAL6 Локальное использование
LOG_LOCAL7 Локальное использование
LOG_LPR Демон принтера
LOG_MAIL Почтовая система
LOG_NEWS Система телеконференций
LOG_SYSLOG Внутренние сообщения системы syslog
LOG_USER Сообщения пользовательского уровня (значение аргумента facility по умолчанию)
LOG_UUCP Система UUCP
Перейти на страницу:
Комментариев (0)
название