Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

Jun 9 09:28:52 susel03 logmask[19339]: debug message, should appear

Как это работает

Программа инициализирует средство ведения системного журнала, названное logmask, и запрашивает включение идентификатора процесса в регистрируемые сообщения. Информирующее сообщение записывается в файл /var/log/messages, а отладочное сообщение — в файл /var/log/debug. Второе отладочное сообщение не появляется, потому что вы вызвали функцию

setlogmask
с игнорированием всех сообщений с приоритетом ниже
LOG_NOTICE
. (Учтите, что этот метод не работает в ранних вариантах ядра Linux.)

Если в установленную у вас систему не включена регистрация отладочных сообщений или она настроена иначе, отладочные сообщения могут не появляться. Для разблокирования всех отладочных сообщений и для получения подробностей настройки см. системную документацию, посвященную функции

syslog
или
syslog-ng
.

Программа logmask.c также использует функцию

getpid
, которая, наряду с тесно связанной с ней функцией
getppid
, определена следующим образом:

#include <sys/types.h>

#include <unistd.h>

pid_t getpid(void);pid_t getppid(void);

Функции возвращают идентификаторы вызвавшего и родительского процессов. Дополнительную информацию об идентификаторах процессов (PID) см. в главе 11.

Ресурсы и ограничения

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

integer
или максимально допустимое количество символов в имени файла). В спецификацию UNIX включены некоторые из этих ограничений, которые может определять приложение. Дальнейшее обсуждение ограничений и последствия их нарушений см. в главе 7.

В заголовочном файле limits.h определены многие именованные константы, представляющие ограничения, налагаемые операционной системой (табл. 4.8).

Таблица 4.8

Ограничительная константа Назначение
NAME_MAX
Максимальное число символов в имени файла
CHAR_BIT
Количество разрядов в значении типа
char
CHAR_MAX
Максимальное значение типа
char
INT_MAX
Максимальное значение типа
int

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

Примечание

Имейте в виду, что константа

NAME_MAX
зависит от файловой системы. Для разработки легко переносимого кода следует применять функцию pathconf. Дополнительную информацию о ней см. на страницах интерактивного справочного руководства.

В заголовочном файле sys/resource.h представлены определения операций над ресурсами. К ним относятся функции для считывания и установки предельных значений для разрешенного размера программы, приоритета выполнения и файловых ресурсов.

#include <sys/resource.h>

int getpriority(int which, id_t who);

int setpriority(int which, id_t who, int priority);

int getrlimit(int resource, struct rlimit *r_limit);

int setrlimit(int resource, const struct rlimit *r_limit);

int getrusage(int who, struct rusage *r_usage);

Здесь

id_t
— это целочисленный тип, применяемый для идентификаторов пользователя и группы. Структура
rusage
, указанная в файле sys/resource.h, используется для определения времени центрального процессора (ЦП), затраченного текущей программой. Она должна содержать, как минимум, два элемента (табл. 4.9).

Таблица 4.9

Элемент структуры
rusage
Описание
struct timeval ru_utime
Время, использованное пользователем
struct timeval ru_stime
Время, использованное системой

Структура

timeval
определена в файле sys/time.h и содержит поля
tv_sec
и
tv_usec
, представляющие секунды и микросекунды соответственно.

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

Функция

getrusage
записывает данные о времени ЦП в структуру
rusage
, на которую указывает параметр
r_usage
. Параметр
who
может быть задан одной из констант, приведенных в табл. 4.10.

Таблица 4.10

Константа
who
Описание
RUSAGE_SELF
Возвращает данные о потреблении только для текущей программы
RUSAGE_CHILDREN
Возвращает данные о потреблении и для дочерних процессов

Мы будем обсуждать дочерние процессы и приоритеты задач в главе 11, но для полноты картины мы здесь упоминаем об их причастности к потреблению системных ресурсов. Пока достаточно сказать, что у каждой выполняющейся программы есть ассоциированный с ней приоритет, и чем выше приоритет программы, тем больше ей выделяется доступного времени ЦП.

Примечание

Обычные пользователи могут только снижать приоритеты своих программ, а не повышать их.

Поделиться:
Популярные книги

Я еще барон. Книга III

Дрейк Сириус
3. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я еще барон. Книга III

Тринадцатый

NikL
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Тринадцатый

Личный аптекарь императора. Том 3

Карелин Сергей Витальевич
3. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора. Том 3

Воронцов. Перезагрузка. Книга 2

Тарасов Ник
2. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Воронцов. Перезагрузка. Книга 2

Имперец. Земли Итреи

Игнатов Михаил Павлович
11. Путь
Фантастика:
героическая фантастика
боевая фантастика
5.25
рейтинг книги
Имперец. Земли Итреи

An ordinary sex life

Астердис
Любовные романы:
современные любовные романы
love action
5.00
рейтинг книги
An ordinary sex life

Барон нарушает правила

Ренгач Евгений
3. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон нарушает правила

Забытые боги

Рокотов Алексей
4. Путь князя
Фантастика:
фэнтези
рпг
попаданцы
5.00
рейтинг книги
Забытые боги

"Охотник". Компиляция. Книги 1-12

Усманов Хайдарали
Собрание сочинений
Фантастика:
боевая фантастика
5.00
рейтинг книги
Охотник. Компиляция. Книги 1-12

Купеческая дочь замуж не желает

Шах Ольга
Фантастика:
фэнтези
6.89
рейтинг книги
Купеческая дочь замуж не желает

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Роза ветров

Кас Маркус
6. Артефактор
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Роза ветров

Черный Маг Императора 6

Герда Александр
6. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
7.00
рейтинг книги
Черный Маг Императора 6

Женить босса срочно!

Верди Алиса
Служебные романы
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Женить босса срочно!