Serve.cfg:tester:kill signal
Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Конфигурационные параметры тестирования/kill_signal
Имя переменной: | kill_signal |
Содержится в: | tester |
Используется: | run |
Тип содержимого: | string |
Может отсутствовать: | да |
Наследуется: | да |
Значение по умолчанию: | term |
Может повторяться: | нет |
Описание. Данная конфигурационная переменная устанавливает имя сигнала, который будет послан тестируемой программе при истечении времени её работы, определяемом с помощью конфигурационной переменной real_time_limit. Поддерживаются следующие имена сигналов:
Имя в конфигурационном файле | Системное имя сигнала |
kill | SIGKILL |
Текущая версия системы ejudge ограничивает время выполнения программы на одном тесте (параметр time_limit) с помощью установки ограничения процессорного времени программы с помощью системной функции setrlimit (см. также команду интерпретатора bash ulimit). Такой подход имеет следующие особенности:
- По истечении добавленной одной секунды тестируемая программа всегда снимается с выполнения посылкой ей сигнала SIGKILL.
- Если тестируемая программа не занимает процессор, например, выполняя системный вызов pause, её истраченное процессорное время не увеличивается, поэтому программа может находиться в таком состоянии сколь угодно долго.
Для борьбы с последней особенностью используется ограничение астрономического времени работы программы, задаваемое с помощью конфигурационной переменной real_time_limit. Данный параметр kill_signal влияет на сигнал, посылаемый тестируемой программе по истечении астрономического времени работы, но не влияет на сигнал, посылаемый программе по истечении процессорного времени работы.
Пример.
kill_signal = "kill"