私は現在オンラインプログラムに取り組んでいます。proc_open()を使用してコマンドラインでコマンドを実行するphpスクリプトを作成しています(Linux Ubuntuの場合)。これはこれまでの私のコードです:
<?php
$cmd = "./power";
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w"),
);
$process = proc_open($cmd, $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], "4");
fwrite($pipes[0], "5");
fclose($pipes[0]);
while($pdf_content = fgets($pipes[1]))
{
echo $pdf_content . "<br>";
}
fclose($pipes[1]);
$return_value = proc_close($process);
}
?>
powerは、入力を2回要求するプログラムです(基数と指数を取り、基数^指数を計算します)。アセンブリで書かれています。しかし、このスクリプトを実行すると、間違った出力が得られます。私の出力は「1」ですが、出力として4^5を期待しています。
1つの入力を受け取るプログラムを実行すると、動作します(入力した値を1つ増やす簡単なプログラムをテストしました)。
fwriteコマンドに関して何かが足りないと思います。誰か助けてくれませんか?
前もって感謝します!