我目前正在开展在线课程。我正在编写一个php脚本,它在命令行中使用proc_open()(在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次(它需要一个基数和一个指数并计算base ^指数)。它是用大会写的。但是当我运行这个脚本时,输出错误了。我的输出为“1”,但我希望输出为4 ^ 5。
当我运行一个输入一个输入的程序时,它可以工作(我测试了一个简单的程序,将输入的值增加1)。
我想我错过了关于fwrite命令的一些内容。有人可以帮帮我吗?
提前致谢!
答案 0 :(得分:3)
你忘了给管道写一个换行符,所以你的程序会认为它只有45
作为输入。试试这个:
fwrite($pipes[0], "4");
fwrite($pipes[0], "\n");
fwrite($pipes[0], "5");
fclose($pipes[0]);
或更短:
fwrite($pipes[0], "4\n5");
fclose($pipes[0]);