Надо добавить возможность сдавать решения на языке C#.
- Компилятор и bat-скрипт для компиляции добавлены в trunk
- Нужно найти способ ограничить возможности запускаемых программ (запрет работы с сетью и т. д.)
- Изучить и реализовать http://msdn.microsoft.com/en-us/library/bb763046.aspx
- Получится, что тестер запускает wikill, который запускает приложение, которое в appdomain запускает тестовое решение.
- Может быть лучше добавить поддержку appdomain в winkill (bug #823)?
Appdomain
Добавил программу appdomain в svn (trunk/checker/compiler/vc-sharp/appdomain.{cs,exe}).
Она принимает два аргумента:
- полный путь до директории, в которой находятся исполняемый файл и {in,out}put.txt (c:\...\test)
- название исполняемого файла (task.exe)
При запуске appdomain ограничивает права (работа с сетью, создание окон), оставляя только чтение/запись input.txt/output.txt
и запускает исполняемый файл. (код возврата тот же, что у исполняемого файла).
К сожалению, не удаётся сделать нормальное взаимодействие с winkill
bug #823,
так как appdomain нужно исполнить другой процесс и winkill падает (его баг?).
Следует улучшить взаимодействие winkill и appdomain.