0

我在 C 中创建了两个程序。第一个获取一个数字并打印它的 double 值,第二个打印四倍。
我想通过 PHP 执行它们。我已经使用 proc_open 完成了它,如果我每次只执行一个程序,它就可以正常工作。
我必须给第一个程序一个数字并将其输出作为输入传递给第二个程序。虽然我使用两个 proc_open 来创建两个进程,但整个过程都不​​起作用。我想做的是这样的:

$process1 = proc_open($command_exe1, $descriptorspec1, $pipes1, $cwd);
$process2 = proc_open($command_exe2, $descriptorspec2, $pipes2, $cwd);
fwrite($pipes1[0], $posted);
fwrite($pipes2[0], $pipes1[1]);
fclose($pipes1[0]);
fclose($pipes2[0]);
while(!feof($pipes1[1])) {
                $StdOut1 = stream_get_contents($pipes1[1]);
                }
        echo $StdOut1;
while(!feof($pipes2[1])) {
                $StdOut2 = stream_get_contents($pipes2[1]);
                }
        echo $StdOut2;
fclose($pipes1[1]);
fclose($pipes2[1]);

proc_close($process1);
proc_close($process2);

我知道这是一种错误的做法,但我想不出其他任何事情,所以......欢迎任何帮助。注意:我在 Windows 上工作。

4

1 回答 1

0

如果进程可以一个接一个单独运行

您可以尝试将“步入”,

/** step 1*/
$process1 = proc_open($command_exe1, $descriptorspec1, $pipes1, $cwd)
...
while(!feof($pipes1[1])) {
                $StdOut1 = stream_get_contents($pipes1[1]);
                }
        echo $StdOut1;


/** step 2*/

$process2 = proc_open($command_exe2 $descriptorspec2, $pipes2, $cwd)
while(!feof($pipes2[1])) {

...

于 2013-07-17T20:49:11.187 回答