Difference between revisions of "Serve.cfg:tester:kill signal"

From EjudgeWiki
 
 
Line 26: Line 26:
 
|-
 
|-
 
| <tt>kill</tt>|| <tt>SIGKILL</tt>
 
| <tt>kill</tt>|| <tt>SIGKILL</tt>
 +
|-
 +
|<tt>term</tt> ||<tt>SIGTERM</tt>
 +
|-
 +
| <tt>int</tt>|| <tt>SIGINT</tt>
 
|}
 
|}
  
 
Текущая версия системы ejudge ограничивает время выполнения программы на одном
 
Текущая версия системы ejudge ограничивает время выполнения программы на одном
тесте (параметр time_limit) с помощью установки ограничения процессорного времени
+
тесте (параметр <tt>[[serve.cfg:problem:time_limit|time_limit]]</tt>) с помощью установки ограничения процессорного времени
программы с помощью системной функции setrlimit (см. также команду интерпретатора
+
программы с помощью системной функции <tt>setrlimit</tt> (см. также команду интерпретатора
bash ulimit). Такой подход имеет следующие особенности:
+
<tt>bash</tt> <tt>limit</tt>). Такой подход имеет следующие особенности:
# По истечении добавленной одной секунды тестируемая программа всегда снимается с выполнения посылкой ей сигнала SIGKILL.
+
# По истечении добавленной одной секунды тестируемая программа всегда снимается с выполнения посылкой ей сигнала <tt>SIGKILL</tt>.
# Если тестируемая программа не занимает процессор, например, выполняя системный вызов pause, её истраченное процессорное время не увеличивается, поэтому программа может находиться в таком состоянии сколь угодно долго.
+
# Если тестируемая программа не занимает процессор, например, выполняя системный вызов <tt>pause</tt>, её истраченное процессорное время не увеличивается, поэтому программа может находиться в таком состоянии сколь угодно долго.
  
 
Для борьбы с последней особенностью используется ограничение астрономического времени работы программы, задаваемое с помощью конфигурационной переменной
 
Для борьбы с последней особенностью используется ограничение астрономического времени работы программы, задаваемое с помощью конфигурационной переменной
real_time_limit. Данный параметр kill_signal влияет на сигнал, посылаемый тестируемой программе по истечении астрономического времени работы, но не влияет на
+
<tt>[[serve.cfg:problem:real_time_limit|real_time_limit]]</tt>. Данный параметр <tt>kill_signal</tt> влияет на сигнал, посылаемый тестируемой программе по истечении астрономического времени работы, но не влияет на
 
сигнал, посылаемый программе по истечении процессорного времени работы.
 
сигнал, посылаемый программе по истечении процессорного времени работы.
  
 
'''Пример.'''
 
'''Пример.'''
 
  kill_signal = "kill"
 
  kill_signal = "kill"

Latest revision as of 13:59, 17 February 2012

Навигация: Главная страница/Система 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"