Ejudge-execute

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Использование из командной строки/ejudge-execute

Программа ejudge-execute позволяет запустить на выполнение программу с установкой ограничений на время выполнения, виртуальное адресное пространство и перенаправлением стандартных потоков.

Программа запускается следующим образом:

 ejudge-execute [OPTIONS] PROGRAM [ARGS]

Здесь OPTIONS - опции программы ejudge-execute, PROGRAM - программа для запуска, ARGS - аргументы запускаемой программы.

Опции

Поддерживаются следующие опции программы ejudge-execute.

--version Вывести на стандартный поток вывода версию системы ejudge и завершить выполнение с кодом завершения 0.
--help Вывести на стандартный поток вывода краткую справку о поддерживаемых опциях и завершить выполнение с кодом завершения 0.
--stdin=FILE Перенаправить стандартный поток ввода запускаемой программы на чтение из указанного файла. Указанный файл должен существовать и быть доступным на чтение.
--stdout=FILE Перенаправить стандартный поток вывода запускаемой программы на запись в указанный файл. Если указанный файл не существовал, он создается, если файл существовал, он очищается.
--stderr=FILE Перенаправить стандартный поток ошибок запускаемой программы на запись в указанный файл. Если указанный файл не существовал, он создается, если файл существовал, он очищается.
--workdir=DIR Установить в качестве рабочего каталога запускаемой программы указанный каталог.
--test-file=FILE Задать имя файла с тестовыми данными.
--corr-file=FILE Задать имя файла с эталонным ответом.
--info-file=FILE Задать имя файла с дополнительной информацией о тестах.
--input-file=FILE Имя входного файла (для программ, считывающих входные данные из файла, а не со стандартного потока ввода).
--output-file=FILE Имя выходного файла (для программ, выводящих результат работы в файл, а не на стандартный поток вывода).
--clear-env Очистить окружение для запускаемой программы.
--env=NAME=VALUE Установить значение переменной окружения NAME в значение VALUE.
--time-limit=TL Установить ограничение процессорного времени для запускаемой программы в указанное время в секундах.
--time-limit-millis=TLMS Установить ограничение процессорного времени для запускаемой программы в указанное время в миллисекундах (данная опция отменяет действие опции --time-limit, если заданы обе).
--real-time-limit=TL Установить ограничение астрономического времени для запускаемой программы в указанное время в секундах.
--no-core-dump Запретить генерацию дампа памяти программы в случае аварийного завершения программы.
--kill-signal=SIG При принудительном завершении программы из-за истечения отведенного ей лимита процессорного или астрономического времени посылать программе сигнал SIG (может быть KILL, TERM или INT).
--memory-limit Включить поддержку распознавания ошибки превышения ограничения на размер виртуального адресного пространства (memory limit exceeded). Поддерживается только при установленном патче на ядро Linux.
--secure-exec Включить режим защищенного выполнения программы. Поддерживается только при установленном патче на ядро Linux.
--security-violation Включить поддержку распознавания запрешенных действий со стороны запускаемой программы (security violation). Поддерживается только при установленном патче на ядро Linux.
--use-stdin
--use-stdout
--max-vm-size=SZ Установить ограничение на максимальный размер виртуального адресного пространства. При указании размера допускается использование суффиксов K, M и G, обозначающих килобайты (210), мегабайты (220) и гигабайты (230) соответственно.
--max-stack-size=SZ Установить ограничение на максимальный размер стека процесса. При указании размера допускается использование суффиксов K, M и G, обозначающих килобайты (210), мегабайты (220) и гигабайты (230) соответственно.
--mode=MODE Задать права доступа к создаваемым файлам.
--group=GROUP Задать группу пользователей создаваемых файлов.
--test-num=NUM Задать номер теста.
--test-pattern=PAT Задать шаблон для тестовых файлов.
--corr-pattern=PAT Задать шаблон для файлов с эталонным ответом.
--info-pattern=PAT Задать шаблон для файлов с дополнительной информацией о тестах.
--update-corr Сохранить файл с результатом работы программы в качестве файла с эталонным ответом.
--test-dir=DIR Задать имя каталога, содержащего тесты, эталонные ответы и т. д.
--all-tests Запустить программу на всех тестах из каталога, задаваемого опцией --test-dir
--quiet Не выводить дополнительную (отладочную) информацию о выполнении программы.

Примеры использования

ejudge-execute --use-stdin --use-stdout --test-file=003.dat --test-pattern=%03d.dat --corr-pattern=%03d.ans --time-limit=1 --mode=664 --group=olymp ../solution

Запустить исполняемый файл ../solution с перенаправлением стандартного потока ввода и стандартного потока вывода и ограничением времени 1 секунда. Стандартный поток ввода перенаправляется на чтение из копии файла 003.dat, а после завершения выполнения программы (при условии успешного завершения) вывод программы на стандартный поток вывода будет скопирован в файл 003.ans, при этом файл 003.ans получит права доступа 664 (восьмеричные, то есть rw-rw-r--) и группу пользователей olymp.

Такого рода командные строки удобно использовать для генерации эталонных ответов по тестовым данным с помощью эталонного решения с помощью следующей команды:

for i in *.dat
do
  ejudge-execute --use-stdin --use-stdout --test-file=$i --test-pattern=%03d.dat --corr-pattern=%03d.ans --time-limit=1 --mode=664 --group=olymp ../solution
done

Если у турнира включена альтернативная раскладка файлов, при веб редактировании тестов поддерживается возможность автоматической генерации Makefile, в котором будет находиться правило answers для перегенерации ответов по тестовым данным.

Следующий пример использует файловый ввод-вывод:

ejudge-execute --input-file=input.txt --output-file=output.txt --test-file=03 --test-pattern=%02d --corr-pattern=%02d.a --time-limit=1 --mode=664 --group=olymp --max-vm-size=256M --max-stack-size=256M ../solution

Тестовые данные из файла 03 перед выполнением программы будут скопированы в файл input.txt, а после выполнения программы файл output.txt будет скопирован в файл 03.a. Кроме того, ограничения на размер отображенной виртуальной памяти и на размер стека устанавливаются равными 256 мегабайт.

Следующий пример запустит программу на всех файлах, удовлетворяющих шаблону %02d, из каталога tests

ejudge-execute --use-stdin --use-stdout --test-pattern=%02d --time-limit=1 --test-dir=tests --all-tests ./solution

Следующий пример обновит файлы с эталонным ответом

ejudge-execute --use-stdin --use-stdout --test-pattern=%02d --corr-pattern=%02d.a --time-limit=1 --test-dir=tests --all-tests --update-corr ./solution