PHP用proc_open执行两个C程序

时间:2013-07-17 20:27:15

标签: php proc-open

我在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。

1 个答案:

答案 0 :(得分: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])) {

...