gpt4 book ai didi

php - 使用 proc_open() 进行多输入

转载 作者:行者123 更新时间:2023-12-04 05:44:24 24 4
gpt4 key购买 nike

我目前正在开发一个在线程序。我正在编写一个 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 次的程序(它需要一个底数和一个指数并计算底数 ^ 指数)。它是用汇编写的。但是当我运行这个脚本时,我得到了错误的输出。我的输出是“1”,但我希望 4^5 作为输出。

当我运行一个接受一个输入的程序时,它可以工作(我测试了一个简单的程序,它将输入的值增加一)。

我想我遗漏了一些关于 fwrite 命令的东西。有人可以帮我吗?

提前致谢!

最佳答案

你忘记给管道写一个换行符,所以你的程序会认为它只有 45作为输入。尝试这个:

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

或更短:
fwrite($pipes[0], "4\n5");
fclose($pipes[0]);

关于php - 使用 proc_open() 进行多输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com