Difference between revisions of "Патч к ядру Linux: использование"

From EjudgeWiki
(Включение безопасного режима работы процесса)
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.

Включение безопасного режима работы процесса

Для включения безопасного режима работы используется системный вызов ptrace:

ptrace(0x4281, 0, 0, 0)

Здесь 0x4281 — «магическое» число - код запроса. Безопасный режим включается у текущего процесса. После включения безопасного режима процесс имеет право выполнить один системный вызов execve, то есть запустить на выполнение другую программу. Запускаемая программа будет работать в безопасном режиме, но уже не будет иметь право выполнять системный вызов exec.

При успешном завершении (то есть когда патч установлен в работающее ядро) системный вызов ptrace возвращает значение 0. Если патч не установлен, ptrace вернет значение -1, а переменная errno будет содержать код ошибки EINVAL.

Установка ограничения времени работы процесса в миллисекундах

Контроль ошибки Memory Limit Exceeded

Контроль ошибки Security Violation