0

codepad のような Web サイトを作成するにはどうすればよいですか? 基本的に、ユーザーが C コードを入力して成功またはエラー メッセージを出力した後、C コードをコンパイルできるようにしたいと考えています。成功した場合、特定のパラメーターでどのように実行できますか? (これはコーディング競技サイト用です)

4

1 に答える 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 に答える