Difference between revisions of "Патч к ядру Linux: использование"
(→Включение безопасного режима работы процесса) |
|||
Line 4: | Line 4: | ||
=== Включение безопасного режима работы процесса === | === Включение безопасного режима работы процесса === | ||
+ | |||
+ | Для включения безопасного режима работы используется системный вызов ptrace: | ||
+ | ptrace(0x4281, 0, 0, 0) | ||
+ | Здесь 0x4281 — «магическое» число - код запроса. | ||
+ | Безопасный режим включается у текущего процесса. После включения безопасного режима | ||
+ | процесс имеет право выполнить один системный вызов execve, то есть запустить на выполнение другую программу. | ||
+ | Запускаемая программа будет работать в безопасном режиме, но уже не будет иметь право выполнять системный вызов exec. | ||
+ | |||
+ | При успешном завершении (то есть когда патч установлен в работающее ядро) системный вызов ptrace возвращает значение 0. Если патч не установлен, ptrace вернет значение -1, а переменная errno будет содержать код ошибки EINVAL. | ||
+ | |||
=== Установка ограничения времени работы процесса в миллисекундах === | === Установка ограничения времени работы процесса в миллисекундах === | ||
=== Контроль ошибки Memory Limit Exceeded === | === Контроль ошибки Memory Limit Exceeded === | ||
=== Контроль ошибки Security Violation === | === Контроль ошибки Security Violation === |
Revision as of 20:23, 21 August 2008
Навигация: Главная страница/Система ejudge/Патч к ядру Linux/использование
В данном разделе описывается использование патча для ядер серии 2.6. Здесь описываются нискоуровневые интерфейсы, которые могут измениться (и изменяются) от версии к версии ядра. Поэтому рекомендуется использовать библиотеку reuse.
Contents
Включение безопасного режима работы процесса
Для включения безопасного режима работы используется системный вызов ptrace:
ptrace(0x4281, 0, 0, 0)
Здесь 0x4281 — «магическое» число - код запроса. Безопасный режим включается у текущего процесса. После включения безопасного режима процесс имеет право выполнить один системный вызов execve, то есть запустить на выполнение другую программу. Запускаемая программа будет работать в безопасном режиме, но уже не будет иметь право выполнять системный вызов exec.
При успешном завершении (то есть когда патч установлен в работающее ядро) системный вызов ptrace возвращает значение 0. Если патч не установлен, ptrace вернет значение -1, а переменная errno будет содержать код ошибки EINVAL.