2013-07-17 1 views
0

나는 C로 두 개의 프로그램을 만들었습니다. 첫 번째는 숫자를 가져 와서 두 번째 값을 출력하고 두 번째 값은 네 번째 값을 출력합니다.
PHP를 통해 을 실행하고 싶습니다. 나는 proc_open을 사용하여이 작업을 수행했으며 매번 한 번만 프로그램을 실행하면 제대로 작동합니다.
첫 번째 프로그램에 번호를 부여하고 그 출력을 두 번째 프로그램의 입력으로 전달해야합니다. 두 개의 프로세스를 생성하기 위해 두 개의 proc_open을 사용하더라도 모든 것이 작동하지 않습니다. 내가 원하는 무엇 이 같은 것입니다 :두 개의 C 프로그램을 proc_open과 함께 실행하는 PHP

$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

nitpick : 같은 건은 "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