Компиляция c использованием ruby

Как мне сделать сайт похожим на кодовую панель? По сути, я хочу иметь возможность компилировать код C после того, как пользователь вводит и выводит сообщение об успехе или ошибке. Если он будет успешным, как я смогу запустить его с определенными параметрами? (Это для сайта конкурса кодирования)

1 ответ

Вы можете вызвать компилятор C из кода ruby, используя обратные ссылки. Вот быстрый и грязный пример с Синатрой:

require 'sinatra'
# Display HTML form
get '/code' do
  '<html><form method="post"><textarea name="code"></textarea><input type="submit" /></form></html>'
end

# Compile code
post '/code' do
  exec = "gcc -x c -o tst - <<EOF\n#{params[:code]} \nEOF\n"
  `#{exec}`
end

При вызове http://localhost:4567/ появляется форма, где вы можете ввести свой код C. Когда вы нажимаете Отправить, код затем компилируется в tst исполняемый файл.

Затем вы можете использовать галочки для выполнения tst с любыми параметрами, которые вы хотите, аналогично тому, что делается для самого процесса компиляции.

Вывод stdin может быть записан путем сохранения результата команды backtick в переменной, например:

output = `tst`

stderr может быть перехвачен путем перенаправления на stdin, например:

output = `tst 2>&1`

NB: Пожалуйста, будьте осторожны, хотя, с точки зрения безопасности, это очень и очень опасно: любой может отправить любой код C и заставить его скомпилировать и выполнить на вашем сервере.

Другие вопросы по тегам