Вы можете вызвать компилятор C из кода ruby, используя обратные галочки.Вот быстрый и грязный пример с Sinatra:
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.Когда вы нажимаете submit, код затем компилируется в исполняемый файл * 1006. *.
. Затем вы можете использовать обратные метки для выполнения tst
с любыми параметрами, которые вы хотите, подобно тому, как это делается для самого процесса компиляции..
Вывод stdin может быть захвачен путем сохранения результата команды backtick в переменной, например:
output = `tst`
stderr может быть перехвачен путем перенаправления на stdin, например:
output = `tst 2>&1`
Примечание: пожалуйста, будьте осторожны , хотя, с точки зрения безопасности, это очень и очень опасно: любой может отправить любой код C и заставить его скомпилировать и выполнить на вашем сервере.