Компиляция c использованием ruby - PullRequest
0 голосов
/ 18 февраля 2011

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

1 Ответ

0 голосов
/ 18 февраля 2011

Вы можете вызвать компилятор 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 и заставить его скомпилировать и выполнить на вашем сервере.

...