Библиотека администратора ресурсов
Библиотека администратора ресурсов
Прежде чем лезть в глубины организации администраторов ресурсов, познакомимся сначала с библиотекой администратора ресурсов, разработанной QSSL. Отметим, что в действительности эта «библиотека» состоит из нескольких четко различимых частей:
• функции пула потоков (мы обсуждали их в главе «Процессы и потоки», в параграфе «Пулы потоков»);
• интерфейс диспетчеризации;
• функции администратора ресурсов;
• вспомогательные функции POSIX-библиотеки.
При том, что можно было бы, конечно, писать администраторы ресурсов «с нуля» (как это делалось в QNX4), эта овчинка часто не стоит такой выделки.
Просто для демонстрации практичности библиотечного подхода — вот код однопоточной версии администратора «/dev/null»:
/*
* resmgr1.c
*
* /dev/null на основе библиотеки администратора ресурсов
*/
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <sys/iofunc.h>
#include <sys/dispatch.h>
int main(int argc, char **argv) {
dispatch_t *dpp;
resmgr_attr_t resmgr_attr;
resmgr_context_t *ctp;
resmgr_connect_funcs_t connect_func;
resmgr_io_funcs_t io_func;
iofunc_attr_t attr;
// Создать структуру диспетчеризации
if ((dpp = dispatch_create()) == NULL) {
perror("Ошибка dispatch_create ");
exit(EXIT_FAILURE);
}
// Инициализировать структуры данных
memset(&resmgr_attr, 0, sizeof(resmgr_attr));
resmgr_attr.nparts_max = 1;
resmgr_attr.msg_max_size = 2048;
// Назначить вызовам обработчики по умолчанию
iofunc_func_init(_RESMGR_CONNECT_NFUNCS, &connect_func,
_RESMGR_IO_NFUNCS, &io_func);
iofunc_attr_init(&attr, S_IFNAM | 0666, 0, 0);
// Зарегистрировать префикс в пространстве имен путей
if (resmgr_attach(dpp, &resmgr_attr,
"/dev/mynull", _FTYPE_ANY,
0, &connect_func, &io_func, &attr) == -1) {
perror("Ошибка resmgr_attach ");
exit(EXIT_FAILURE);
}
ctp = resmgr_context_alloc(dpp);
// Ждать сообщений в вечном цикле
while (1) (
if ((ctp = resmgr_block(ctp)) == NULL) {
perror("Ошибка resmgr_block ");
exit(EXIT_FAILURE);
}
resmgr_handler(ctp);
}
}
И все! Полнофункциональный администратор ресурса /dev/null реализуется всего несколькими вызовами функций!
Если бы пришлось писать аналогичный по функциональности администратор (то есть с поддержкой функций stat(), chown(), chmod(), и т.д.) «с нуля», то вам пришлось бы перелопатить сотни, если не тысячи строк Си-кода.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Поиск администратора процессов
Поиск администратора процессов Теперь, когда мы знаем основные этапы поиска конкретного администратора ресурса, осталось раскрыть тайну поиска администратора процесса, с которого все начинается. На самом деле все очень просто. По определению, администратору процессов
Взгляд со стороны администратора ресурсов
Взгляд со стороны администратора ресурсов Давайте теперь посмотрим на вещи с позиции администратора ресурса. Перво-наперво администратор ресурса должен сообщить администратору процессов, что он берет на себя ответственность за некоторую часть пространства имен путей
Написание администратора ресурсов
Написание администратора ресурсов Теперь, когда мы знаем основы, — как выглядит мир глазами клиента, в каком цвете видит все администратор ресурсов, и что из себя представляют оба уровня библиотеки — пришло время сконцентрироваться на деталях.В этом разделе мы
Структура администратора ресурсов
Структура администратора ресурсов Теперь, когда мы имеем представление о структурах данных, мы можем обсудить взаимодействие между компонентами, которые вам предстоит написать, чтобы ваш администратор ресурсов мог что-нибудь реально сделать.Мы рассмотрим:• Функцию
Блокирование в пределах администратора ресурсов
Блокирование в пределах администратора ресурсов До настоящего момента мы избегали разговоров о возможности блокирования в пределах администратора ресурсов. Мы предполагали, что у нас есть функция-обработчик (например, io_read()), и что данные будут доступны немедленно. А
(8.21) Утерян пароль администратора. Что делать? Доступ к компьютеру полный.
(8.21) Утерян пароль администратора. Что делать? Доступ к компьютеру полный. Удалите файлы %Windir%system32configsam*. Если W2k установлен на FAT/FAT32, то из Win9x или с дискеты, если на NTFS – придется установить параллельную копию системы или снять жесткий диск и поставить его на другую машину с
Смена расширения: как обойти ограничения администратора и прокси-сервера
Смена расширения: как обойти ограничения администратора и прокси-сервера Надеюсь, некоторые советы в предыдущем разделе помогли вам получить доступ к тем веб-страницам, посещение которых ограничено или запрещено. Конечно, описанные методы работают не в 100 % случаев, и в
1.7. Что такое сервер? (или Курс Молодого Администратора)
1.7. Что такое сервер? (или Курс Молодого Администратора) Эта глава предназначена для начинающих системных администраторов, которые вообще с трудом представляют, что такое сервер и с чем его едят. Я принципиально не буду называть таких читателей «чайниками», поскольку сам
13.7. Получение ресурсов из библиотеки ресурсов
13.7. Получение ресурсов из библиотеки ресурсов Постановка задачи Требуется получить фотографии или видео непосредственно из библиотеки фотографий, не прибегая к использованию каких-либо встроенных компонентов графического пользовательского
Инструмент администратора
Инструмент администратора Инсталляционный комплект Firebird не содержит инструментов администратора с графическим интерфейсом. У него есть набор инструментов командной строки (исполняемые программы), которые расположены в каталоге /bin каталога инсталляции Firebird. Их
Графические инструменты администратора
Графические инструменты администратора Следующий список является лишь выборкой некоторых наиболее популярных элементов. Полный список см. на http://www.ibphoenix.com/main.nfs?a=ibphoenix &page=ibp_admin_tooIs. Database Workbench Database Workbench может соединяться с любым сервером Firebird на любой платформе. Он
21.6. Команды системного администратора
21.6. Команды системного администратора 21.6.1. Команды free и df— информация о системных ресурсах Команда free выводит информацию об использовании оперативной и виртуальной памяти, а df — об использовании дискового пространства. Из рис. 21.5 видно, что в системе установлено всего
Настройка окружения администратора
Настройка окружения администратора Таким образом, мы привели внешний вид рабочего стола в приемлемое состояние. Однако не следует этим ограничиваться: нам предстоят ещё некоторые действия, которые надо будет выполнить от имени администратора, а на его окружение
3.2.5. Запуск программы с правами администратора
3.2.5. Запуск программы с правами администратора Почему Windows XP была настоящим раем для вирусописателя? Иногда полчаса, проведенные в Интернете без антивируса и брандмауэра, заканчивались «поселением» на компьютере с десятка вирусов и шпионских программ. А все из-за того,
5.1.5. Запуск командной строки с правами администратора
5.1.5. Запуск командной строки с правами администратора Командную строку вам придется запускать очень редко, но ее запуск обычно требует прав администратора. Можно щелкнуть на ярлыке Командная строка правой кнопкой мыши и выбрать команду Запуск от имени администратора. А