Программы инициализации

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Программы инициализации

Программа инициализации запускается перед запуском тестируемой программы и после завершения работы тестируемой программы. Назначение программы инициализации - настроить окружение для работы тестируемой программы, если соответствующие настройки не поддерживаются ejudge. После завершения работы тестируемой программы программа инициализации должна освободить ресурсы, запрошенные при настройке окружения.

Например, программа инициализации перед запуском тестируемой программы может запустить дополнительный процесс, или создать ресурс межпроцессного взаимодействия. После завершения работы тестируемой программы программа инициализации может, соответственно, остановить дополнительный процесс, либо уничтожить созданные ресурсы межпроцессного взаимодействия.

Перед запуском тестируемой программы программа инициализации запускается с аргументами:

INIT-CMD start TEST-SRC CORR-SRC INFO-SRC

где INIT-CMD - сама программа инициализации, TEST-SRC - путь к файлу с тестовыми данными, CORR-SRC - путь к файлу с эталонными ответами. Программа инициализации должна завершиться с кодом завершения 0, любой другой код завершения приводит к диагностике внутренней ошибки проверки.

После завершения тестируемой программы программа инициализации запускается с аргументами:

INIT-CMD stop TEST-SRC CORR-SRC INFO-SRC

Если программа инициализации завершается с кодом 0, выполняется дальнейшая проверка выходного файла проверяющей программой и дальнейшие шаги тестирования. Если программа инициализации завершается с кодом 1 или 5, вердикт тестирования на данном тесте устанавливается в неправильный ответ. Если программа инициализации завершается с кодом 2 или 4, вердикт тестирования на данном тесте устанавливается в ошибку неправильного формата результата. В противном случае диагностируется внутренняя ошибка проверки.

Имя программы инициализации можно задать с помощью конфигурационной переменной init_cmd раздела описания задачи файла serve.cfg. Дополнительные переменные окружения для программы инициализации можно задать с помощью конфигурационной переменной init_env раздела описания задачи файла serve.cfg.

Данная возможность поддерживается, начиная с версии 2.3.22.