2012-06-04 2 views
1

현재 온라인 프로그램을 작성 중입니다. proc_open() (리눅스 우분투에서) 명령 줄에서 명령을 실행하는 PHP 스크립트를 작성하고 있습니다. 이는 지금까지 내 코드이다다중 입력 : proc_open()

<?php 
$cmd = "./power"; 

$descriptorspec = array(
    0 => array("pipe", "r"), 
    1 => array("pipe", "w"), 
    2 => array("pipe", "w"), 
); 

$process = proc_open($cmd, $descriptorspec, $pipes); 

if (is_resource($process)) { 

    fwrite($pipes[0], "4"); 
    fwrite($pipes[0], "5"); 
    fclose($pipes[0]); 

    while($pdf_content = fgets($pipes[1])) 
    { 
     echo $pdf_content . "<br>"; 
    } 
    fclose($pipes[1]); 

    $return_value = proc_close($process); 
} 
?> 

전력은 (는베이스와 지수를 받아베이스^지수를 산출) 입력의 2 배를 요구하는 프로그램이다. 그것은 의회에 기록되어 있습니다. 그러나이 스크립트를 실행할 때 잘못된 결과가 표시됩니다. 내 출력은 "1"이지만 출력으로 4^5를 기대합니다.

하나의 입력을 사용하는 프로그램을 실행하면 작동합니다 (입력 된 값을 하나씩 증가시키는 쉬운 프로그램을 테스트 함).

fwrite 명령과 관련하여 뭔가 빠졌다고 생각합니다. 아무도 나를 도울 수 없습니까?

미리 감사드립니다.

답변

2

파이프에 줄 바꿈을 쓰는 것을 잊었 기 때문에 프로그램에서는 입력란에 45 만 있다고 생각할 것입니다. 이 시도 :

fwrite($pipes[0], "4"); 
fwrite($pipes[0], "\n"); 
fwrite($pipes[0], "5"); 
fclose($pipes[0]); 

이하를 :

fwrite($pipes[0], "4\n5"); 
fclose($pipes[0]); 
+0

감사합니다! 그게 문제 였어 :) – Devos50