2016-11-27 10 views
1

オンラインでC/C++コンパイラを作成し、クライアント側でコードをアップロードし、gccコンパイラを使用してサーバを実行することができます。 主な問題は、ローカルサーバでgccを設定してコードを実行し、結果をクライアントに返す方法です。サーバ側でgccコンパイラをセットアップし、クライアントがアップロードしたコードを実行するように頼む方法は?

+0

私はこれが: の複製であると思います。http://stackoverflow.com/questions/12806365/calling-gcc-with-shell-exec-in-php –

答えて

0

これに対する最も簡単な方法は、gccの特定の設定を必要としません。アップロードされたファイルを取得し、特定のディレクトリに配置して、を入力してください(他の回答で指摘されているように、shell_execなどを使用してください)。いい考えはgccのstdoutstderrと、もちろんサブプロセスの終了コードをチェックすることです。すべてがうまくいけば、結果の実行ファイルはgccに置く場所に置かれますので、読み込んで取得するだけです。

これは、問題の過度に単純化された説明であることに注意してください。タイムアウトにつながる可能性のある長いコンパイル時間は処理されず、セキュリティ上の懸念も考慮されませんが、あなたは何かを起草し始める。

これに代わる方法として、distccをご覧になることをお勧めします。セットアップが簡単で、認証オプションがあり、マシン間のバランシングなどがあり、非常にカスタマイズが可能です。また、ユーザーがプロセスを少しシンプルにしてくれます。何かをコンパイルしたいときは(もちろん構成後に)gcc ...からdistcc ...を端末に置き換えるだけです。

関連する問題