2013-07-17 35 views
0

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

$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

挑剔:有没有这样的事,作为一个“C脚本”。你的第二个proc_open调用中还有一个输入错误,在第一个参数后面。 –

+0

我的意思是C代码,简单的C程序。至于','和';'在行结束时,复制过程中可能是一个错误。 – georgia

回答

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])) { 

...

+0

问题是如果我想在每个程序中有2个输入和输出不起作用。我的意思是每个代码可以得到2个数字并打印他们的double/duadruple。 – georgia