Serve.cfg:tester:kill signal

From EjudgeWiki

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

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

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

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

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

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

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

Пример.

kill_signal = "kill"