codepad のような Web サイトを作成するにはどうすればよいですか? 基本的に、ユーザーが C コードを入力して成功またはエラー メッセージを出力した後、C コードをコンパイルできるようにしたいと考えています。成功した場合、特定のパラメーターでどのように実行できますか? (これはコーディング競技サイト用です)
1 に答える
0
バッククォートを使用して、Ruby コードから C コンパイラを呼び出すことができます。以下は、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 コードを入力できるフォームが表示されます。送信を押すと、コードが実行可能ファイルにコンパイルされtst
ます。
その後、バッククォートを使用しtst
て、コンパイル プロセス自体で行われるのと同様に、任意のパラメーターを使用して実行できます。
stdin 出力は、backtick コマンドの結果を変数に格納することで取得できます。たとえば、次のようになります。
output = `tst`
stderr は、stdin にリダイレクトすることでキャプチャできます。
output = `tst 2>&1`
注意:ただし、セキュリティの観点から、これは非常に危険です。誰でも C コードを送信して、サーバー上でコンパイルおよび実行することができます。
于 2011-02-18T20:41:10.123 に答える