gpt4 book ai didi

php - 使用 proc_open() 在 PHP 中运行 C 可执行文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:35 27 4
gpt4 key购买 nike

如果您发现这个问题,我很抱歉(再次)菜鸟。但我在 proc_open 上确实有问题。

我有一个C 文件,我想使用proc_open() 运行它并从文本文件中读取输入。我能够获取输入并将其提供给可执行文件。问题是我只是对 array of fetched strings 进行了硬编码。

PHP 代码片段:

        $descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "error.log", "a")
);

$process = proc_open('C:/xampp/htdocs/ci_user/add2', $descriptorspec, $pipes);
sleep(1);

if (is_resource($process)) {

//Read input.txt by line and store it in an array
$input = file('C:/xampp/htdocs/ci_user/input.txt');

//Feed the input (hardcoded)
fwrite($pipes[0], "$input[0] $input[1]");

fclose($pipes[0]);

while ($s = fgets($pipes[1])) {
print $s."</br>";
flush();
}
fclose($pipes[1]);


}

add2.c

    #include <stdio.h>

int main(void) {
int first, second;

printf("Enter two integers > ");
scanf("%d", &first);
scanf("%d", &second);
printf("The two numbers are: %d %d\n", first, second);
printf("Output: %d\n", first+second);
}

管道上的流[1](printf 的)

Enter two integers > The two numbers are: 8 2 
Output: 10

问题关于如何将“$input”元素作为输入布局是否有“动态方式

            fwrite($pipes[0], "$input[0] $input[1]");

或者是否有更方便的方法从文件获取输入并在 proc_open() 运行的 C 可执行文件中存在 scanf 时提供输入。

(顺便说一句,对于那些在 proc_open() 中遇到麻烦的人,尤其是像我这样的初学者,我希望我的代码能以某种方式帮助你。这是我第一次尝试几次后让它运行所以我的代码很简单。)

对于专业人士,请帮助我。 :( 谢谢!

最佳答案

怎么样?

fwrite($pipes[0],implode(" ",$input));

http://php.net/manual/en/function.implode.php

关于php - 使用 proc_open() 在 PHP 中运行 C 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19021961/

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