Difference between revisions of "Serve.cfg:tester:kill signal"
(Created page with "Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/[[serve...") |
|||
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 | + | <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). Такой подход имеет следующие особенности:
- По истечении добавленной одной секунды тестируемая программа всегда снимается с выполнения посылкой ей сигнала SIGKILL.
- Если тестируемая программа не занимает процессор, например, выполняя системный вызов pause, её истраченное процессорное время не увеличивается, поэтому программа может находиться в таком состоянии сколь угодно долго.
Для борьбы с последней особенностью используется ограничение астрономического времени работы программы, задаваемое с помощью конфигурационной переменной real_time_limit. Данный параметр kill_signal влияет на сигнал, посылаемый тестируемой программе по истечении астрономического времени работы, но не влияет на сигнал, посылаемый программе по истечении процессорного времени работы.
Пример.
kill_signal = "kill"