-1

私は私たちの学校のためにオンラインジャッジ(topcoder / codeforces.comのような)を開発していました。
しかし、私は開始する方法がわかりません-phpを使用して誰かのC++コードを評価するにはどうすればよいですか?
また、コードはc ++を使用するため、ファイルに保存されている入力を提供する必要があることに注意してください。
サイトの設計(php)と生成された出力のテストに問題はありません。
私がいくつかの外部サイトを使用できれば、それは好ましいでしょう(私はサーバーを所有していません、資金はそれほど無料ではありません!)。

よろしくお願いします。-アダム

4

1 に答える 1

1

これを行う最も明白な方法は、アップロードされたソースで system/exec を介してコンパイラを呼び出すことです。おそらくこれが唯一の方法です。PHP用のC++パーサー/インタープリターがあるとは思えません(理論的には可能ですが、非常に複雑で無意味です)。

ほとんどの場合、すべてのホスティング プロバイダーが system/exec への呼び出しをブロックしているため、専用のホスティングがない場合、これを行うのは困難です。

ユーザーを完全に信頼していない場合 (学友がハッキングする可能性があります)、コードから作成したアプリケーションを「サンドボックス化」する必要もあります。誰もあなたのファイルシステムを読み取ったり、ファイルを削除したり、データベースに接続したりできないようにする必要があります。これは、次の1つ以上から実行できます。

  • 信頼できるヘッダー/ライブラリの閉じたリストにのみアクセスを許可します (数学など)
  • この目的専用に作成されたユーザーとしてアプリケーションを実行します (最も簡単な解決策)
  • 仮想マシンを使用する

確認してもいい:

オンライン審査員をゼロから作成する

そして多分これは役に立つでしょう:

https://github.com/anomit/loki

于 2013-02-05T16:39:28.093 に答える