Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Внести вклад в разработку кода
Синхронизировать код
README.md
PowerJudge
Judge Core for PowerOJ на платформе Linux.
Основан на ядрах UESTC и HUST judge core.
##Функции##
- Автоматическое получение файлов данных из каталога данных и сортировка по имени.
- Установка ограничений процесса для компилятора, исполнителя и spj.
- Запуск в качестве службы upstart.
- Компиляция/выполнение с пользовательским судьёй для обеспечения безопасности.
- Быстрый судья для Python, который не использует chroot или копирует среду выполнения.
- Поддержка 32-битной и 64-битной версий Linux:
- Ubuntu 14.04 Server 32bit
- Ubuntu 14.04 Server 64bit
- Linux Mint 14 32bit
- Linux Mint 14 64bit
- Debian 7.5 32bit
- Debian 7.1 64bit.
- Redhat 5.5 не поддерживается
- CentOS 4.8 не поддерживается.
##Загрузка##
git clone https://github.com/power721/PowerJudge.git
##Зависимости##
sudo apt-get update && sudo apt-get install -y fpc openjdk-8-jdk python2.7 gcc g++ libbsd-dev libcurl4-openssl-dev.
sudo yum install glibc-devel glibc-static gcc gcc-c++ java-1.7.0-openjdk java-1.7.0-openjdk-devel gpm libbsd-dev
sudo rpm -ivh fpc-2.6.0-5.1.i686.rpm.
Не поддерживается Eclipse Java Compiler или gcj-jdk.
##Сборка##
make
или
make -e FAST_JUDGE=true
make -e LOG_LEVEL=LOG_NOTICE.
##Тестирование##
make test.
##Установка##
sudo ./install.sh.
##Использование клиентом##
/usr/local/bin/powerjudge -s 10000 -p 1000 -t 1000 -m 65536 -l 2 -D ./data -w ./temp.
-
-s — идентификатор решения;
-
-p — идентификатор проблемы;
-
-t — ограничение по времени (необязательно, по умолчанию 1000 мс);
-
-m — ограничение памяти (необязательно, по умолчанию 65536 КБ);
-
-l — идентификатор языка:
1 — C;
2 — CPP;
3 — Pascal;
4 — Java;
5 — Python;
-
-D — корневой каталог данных, например, ~/oj/data/;
-
-w — рабочий корневой каталог, например, ~/oj/temp/.
Краткий процесс:
- Инициализация.
- Анализ параметров:
- проверка полноты параметров;
- получение каталогов данных и рабочих каталогов;
- проверка исходного кода файла;
- установка временных и пространственных ограничений программы.
- Проверка действительного пользователя.
- Изменение текущего каталога.
- Установка часов судьи.
- Регистрация обработчика сигнала тайм-аута.
- Компиляция:
- настройка ограничений компиляции;
- перенаправление ввода-вывода программы компиляции;
- вызов внешнего компилятора;
- обработка состояния возврата внешнего компилятора и сигналов.
- Запуск оценки:
- сканирование каталога данных для получения файлов данных;
- оценка каждой группы данных:
- перенаправление ввода и вывода;
- установка безопасных ограничений;
- настройка ограничений ресурсов;
- установка таймера тайм-аута;
- мониторинг системных вызовов;
- запуск пользовательской программы;
- инициализация таблицы системных вызовов главного процесса;
- проверка состояния выполнения дочернего процесса главным процессом:
- проверка сигналов;
- проверка памяти;
- проверка системных вызовов.
- проверка результатов нормального завершения дочернего процесса:
a) запуск программы spj или
b) сравнение файлов вывода.
- обновление промежуточного состояния оценки.
- Очистка рабочего каталога.
- Вывод результатов оценки.
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )