我在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。
答案 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])) {
...