Serve.cfg:tester:kill signal

From EjudgeWiki
Revision as of 13:55, 17 February 2012 by Anna (talk | contribs) (Created page with "Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/[[serve...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Конфигурационные параметры тестирования/kill_signal

Имя переменной: kill_signal
Содержится в: tester
Используется: run
Тип содержимого: string
Может отсутствовать: да
Наследуется: да
Значение по умолчанию: term
Может повторяться: нет

Описание. Данная конфигурационная переменная устанавливает имя сигнала, который будет послан тестируемой программе при истечении времени её работы, определяемом с помощью конфигурационной переменной real_time_limit. Поддерживаются следующие имена сигналов:

Имя в конфигурационном файле Системное имя сигнала
kill SIGKILL

Текущая версия системы ejudge ограничивает время выполнения программы на одном тесте (параметр time_limit) с помощью установки ограничения процессорного времени программы с помощью системной функции setrlimit (см. также команду интерпретатора bash ulimit). Такой подход имеет следующие особенности:

  1. По истечении добавленной одной секунды тестируемая программа всегда снимается с выполнения посылкой ей сигнала SIGKILL.
  2. Если тестируемая программа не занимает процессор, например, выполняя системный вызов pause, её истраченное процессорное время не увеличивается, поэтому программа может находиться в таком состоянии сколь угодно долго.

Для борьбы с последней особенностью используется ограничение астрономического времени работы программы, задаваемое с помощью конфигурационной переменной real_time_limit. Данный параметр kill_signal влияет на сигнал, посылаемый тестируемой программе по истечении астрономического времени работы, но не влияет на сигнал, посылаемый программе по истечении процессорного времени работы.

Пример.

kill_signal = "kill"