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.