Использование идентификатора UID в качестве условия

Использование идентификатора UID в качестве условия

Если разрабатываемый код связан с контекстом процесса, то иногда появляется возможность выполнить альтернативную реализацию не "ломая" существующий код. Это важно, если необходимо переписать важный системный вызов и при этом необходима полностью функционирующая система, на которой этот вызов нужно отладить. Например, допустим, что нужно переписать алгоритм работы системного вызова fork(), который бы использовал некоторые новые возможности, которые уже существуют в ядре. Если сразу не получится все сделать так как надо, то будет очень тяжело отлаживать ядро, так как неработающий системный вызов fork() скорее всего приведет к неработоспособности системы. Но как и всегда, есть надежда.

Часто безопасным будет сохранить старый алгоритм, а новую реализацию выполнить в другом месте. Этого можно достичь используя идентификатор пользователя (UID) в качестве условия того, какой алгоритм использовать.

if (current->uid != 7777) {

 /* старый алгоритм ... */

} else {

 /* новый алгоритм ... */

}

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

11.8. Использование Web-браузера в качестве универсального клиента

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

11.8. Использование Web-браузера в качестве универсального клиента Отделение CLI-сервера от GUI-интерфейса стало особенно привлекательной стратегией после того, как в середине 1990-х годов технология World Wide Web преобразила мир компьютерных вычислений. Для большого класса


Пример: использование дескриптора файла в качестве объекта синхронизации

Из книги Системное программирование в среде Windows автора Харт Джонсон М

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


8.1.17. Использование массива в качестве стека или очереди

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

8.1.17. Использование массива в качестве стека или очереди Базовые операции со стеком называются push и pop, они добавляют и удаляют элементы в конец массива. Базовые операции с очередью — это shift (удаляет элемент из начала массива) и unshift (добавляет элемент в начало массива). Для


Использование uA741 в качестве детектора уровня

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Использование uA741 в качестве детектора уровня Схема на рис. 16.17 используется в качестве детектора уровня входного напряжения V1. Создайте эту схему в Capture с именем leveldet. Используйте VPWL для V1, VDC для Vref=3 В, V+=9 В и V–=9 В. Затем добавьте в схему резистор RL=4,8 кОм и заземление. При


28.1. Преобразование идентификатора в имя

Из книги C++. Сборник рецептов автора Диггинс Кристофер

28.1. Преобразование идентификатора в имя В результате выполнения команды ls -l для вывода списка содержимого текущего каталога в третьей и четвертой колонках указываются идентификаторы (ID) пользователя и группы, к которой принадлежит каждый файл. Этот список выглядит


8.8. Присвоение каждому экземпляру класса уникального идентификатора

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

8.8. Присвоение каждому экземпляру класса уникального идентификатора ПроблемаТребуется, чтобы каждый объект класса имел уникальный идентификатор.РешениеДля отслеживания следующего доступного для использования идентификатора используйте статическую переменную-член.


Раздел идентификатора

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

Раздел идентификатора Теперь поговорим о содержимом второго раздела, используемого для описания расширения.Кроме разделов идентификаторов для расширений файлов, в системе также существуют стандартные идентификаторы Windows, описывающие такие объекты, как папка, диск,


Параметры раздела идентификатора

Из книги QT 4: программирование GUI на С++ автора Бланшет Жасмин

Параметры раздела идентификатора Раздел идентификатора может содержать следующие параметры.? EditFlags — данный параметр DWORD-типа определяет различные ограничения на модификацию параметров данного расширения при помощи вкладки Типы файлов диалога Свойства папки.


Разделы ветви идентификатора

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

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


23.8. Определение идентификатора ассоциации по IP-адресу

Из книги автора

23.8. Определение идентификатора ассоциации по IP-адресу Модифицированный клиент из раздела 23.7 использовал уведомления в качестве сигнала для получения списков адресов. Это было достаточно удобно, поскольку идентификатор ассоциации, для которой требовалось получить


Использование QTextBrowser в качестве простого браузера системы помощи

Из книги автора

Использование QTextBrowser в качестве простого браузера системы помощи Для больших приложений может потребоваться более сложная система помощи в отличие от той, которую обычно обеспечивают всплывающие подсказки, комментарии в строке состояния и справки «что это такое?».


Область действия идентификатора

Из книги автора

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