UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Более новые реализации отключают возможность создания сокета UDP, если она не задана администратором, поскольку если позволить кому угодно отправлять дейтаграммы UDP на этот порт (возможно, заполняя приемный буфер его сокета), это может привести к тому, что законные сообщения не будут получены (атака типа отказ в обслуживании) или переполнится файловая система из-за неограниченного роста журналов.
Между реализациями демона syslogd существуют различия. Например, доменные сокеты Unix используются Беркли-реализациями, а реализации System V используют потоковый драйвер (streams log driver). Различные реализации, происходящие от Беркли, используют для доменных сокетов Unix различные полные имена. Мы можем игнорировать все эти тонкости, если используем функцию syslog.
Мы можем отправлять сообщения о событиях для записи в журнал (log messages) демону
syslogd
syslog
13.3. Функция syslog
Поскольку у демона нет управляющего терминала, он не может просто вызвать функцию
fprintf
stderr
syslog
#include <syslog.h>
void syslog(int <i>priority</i>, const char *<i>message</i>, ...);
Хотя эта функция изначально разрабатывалась для BSD, в настоящее время она предоставляется большинством производителей систем Unix. Описание
syslog
syslog
Аргумент
priority
level
facility
message
printf
%m
errno
message
Сообщения для журнала имеют значение
level
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
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 |