C/C++ のオンライン コンパイラを作成したいと考えています。
これまで、次のコードを開発しました。
<?php
error_reporting(E_ALL);
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]);
compile();
}
function compile()
{
$a=shell_exec('gcc -o Compile Compile.c');
echo $a;
$b=shell_exec('./Compile');
echo $b;
}
?>
ファイル Compile.c がアップロードされ、その後 gcc によってコンパイルされます。私がやりたいことは次のとおりです。
- コンパイル結果がエラーの場合、stderr からエラーを読み取り、Web ページに表示します。
- エラーがない場合は、入力ファイルでコードを実行し、実行時間を表示します。時間が特定の値を超えた場合は、時間制限超過エラーを表示します。
インターネットを検索したところ、コンパイルステートメントが「2>&1」で追加されている場合、
$a=shell_exec('gcc -o Compile Compile.c 2>&1');
次に、コンパイル エラーの出力が割り当てられた変数 (上記の場合は $a) に返されますが、それがないわけではありません。したがって、私の問題は、エラーをチェックし、「2>&1」を追加せずにWebページに表示し、エラーがない場合は、上記の2番目のステップを実行する方法です。