PyJudge.Run
Система изоляции запуска. В идеале — кроссплатформенная на питоне (исследовать принципиальную возможность такого подхода). Должна ограничивать:
- объём потребляемой памяти
- количество запускаемых процессов
- время работы
- запись в файловую систему
Вариант реализации:
- Вырожденный запуск, при котором ограничение не проверяются, если оно не выставлено в 0, а если выставлено — считается автоматически нарушенным
- Кроссплатформенный запуск, при котором не работают некоторые виды ограничений
- Штатный запуск со всеми ограничениями в расчёте на Linux в качестве платформы
В этом случае ../Check всегда пользуется данным модулем для запуска (как минимум в режиме 0)
На входе
Здесь возможно несколько вариантов, зависит от исследования -- FrBrGeorge 2022-08-01 14:42:37
Вариант:
- Параметры ограничений (объём памяти, количество процессов и т. п.)
- Запускаемая программа (или каталог, в котором лежит тестируемый модуль)
Файл, который необходимо перенаправить этой программе на stdin
На выходе
stdout запуска программы (поток или файл, возможны варианты)
stderr (поток или файл) и exit status запуска программы
- (возможно) классификация ошибки (какого ресурса не хватило / само упало)