与proc_open多输入()(Multiple input with proc_open())

2019-06-25 08:48发布

我目前工作的一个在线程序。 我正在写一个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);
}
?>

功率是,对于输入2次询问(它需要一个底座和一个指数并计算基础^指数)的程序。 这是写在大会。 但是,当我运行该脚本,我得到错误的输出。 我的输出为“1”,但我预计4 ^ 5作为输出。

当我运行一个程序,它有一个输入,它的工作原理(我测试过一个简单的程序,由一个递增输入的值)。

我想我没有关于和fwrite命令的东西。 任何人都可以帮我吗?

提前致谢!

Answer 1:

你忘了写一个新行到管,所以你的程序会认为它只得到45作为输入。 试试这个:

fwrite($pipes[0], "4");
fwrite($pipes[0], "\n");
fwrite($pipes[0], "5");
fclose($pipes[0]);

或者更短:

fwrite($pipes[0], "4\n5");
fclose($pipes[0]);


文章来源: Multiple input with proc_open()