Serve.cfg:tester:start cmd

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Конфигурационные параметры тестирования/start_cmd

Имя переменной: start_cmd
Содержится в: tester
Используется: run
Тип содержимого: путь к файлу
Может отсутствовать: да
Наследуется: да
Значение по умолчанию: не установлено
Может повторяться: нет

Описание. Данная конфигурационная переменная устанавливает путь к вспомогательной программе, используемой для запуска тестируемой программы участника. Эта вспомогательная программа должна выполнить необходимые подготовительные операции, а затем вызвать тестируемую программу с помощью системного вызова execv или execve. Полный путь к тестируемой программе передаётся первым аргументом командной строки, а дополнительные аргументы для тестируемой программы — последующими параметрами. Простейший способ вызова тестируемой программы из вспомогательной программы заключается в вызове функции execv со следующими параметрами.

execv(argv[1], argv + 1);

Идентификатор процесса тестируемой программы должен быть равен идентификатору процесса вспомогательной программы (то есть не допускается использование fork, system, popen и т. д.), так как в противном случае не гарантируется корректное завершение тестируемой программы по истечению лимита времени.

Если данная конфигурационная переменная не установлена, но абстрактный тестировщик, указанный в переменной super, устанавливает эту переменную, используется значение переменной из описания абстрактного тестировщика, при этом выполняются форматные подстановки. Если значение переменной start_cmd не начинается с символа ’/’, то есть является относительным путём, оно добавляется к значению глобальной конфигурационной переменной script_dir. Если после всех указанных выше действий значение переменной start_cmd не определено, никакая вспомогательная программа запускаться не будет, а программа run будет запускать тестируемую программу непосредственно.

Пример.

start_cmd = "capexec"