Похоже, вам нужен небольшой интерфейс для компилятора, чтобы он соответствовал чему-то вроде FastCGI .Точный интерфейс будет зависеть от веб-сервера, который вы используете, но общий принцип остается довольно близким к постоянному - вызовите компилятор, перехватите его выходные данные и направьте его обратно на сервер для форматирования в формате HTML и отправки пользователю.
Редактировать: извините, когда я впервые прочитал это, я не заметил часть вопроса «и беги».Для этого почти единственным разумным выбором является запуск кода на виртуальной машине.По сути, настройте виртуальную машину и создайте «снимок» в ее первоначальном состоянии.Затем при каждом запуске программы вы восстанавливаете виртуальную машину из снимка и запускаете программу пользователя.Сложная часть будет порождать программу для запуска внутри виртуальной машины и записывать ее вывод, когда это будет сделано.Я предполагаю, что это возможно, но я никогда не пытался это сделать, поэтому я не уверен, как именно - и даже если бы я знал, как, это в любом случае, вероятно, меняется от одной виртуальной машины к другой.