2009-08-24 5 views
0

PHP에서 TCL 스크립트를 실행하려고합니다. 나는 통신을 위해 PHP의 proc_open을 사용하고 있습니다. 그러나 tcl 스크립트의 결과를 얻을 수 없습니다. 코드를 통해 누군가 내가 잘못 가고 있는지 알려 줄 수 있습니까?PHP에서 proc_open 함수 사용

당신은 응용 프로그램 (fwrite($pipes[0], "source sum.tcl\n")), 즉 원인이 될 수 있습니다에 줄 바꿈을 통과하지 않는

<?php 
$app = 'tclsh84.exe'; 

$spec = array(array("pipe", "r"), array("pipe", "w"), array("pipe", "w")); 

$process = proc_open($app, $spec, $pipes); 

if (is_resource($process)) 
{ 

    fwrite($pipes[0], 'source sum.tcl '); 
    fwrite($pipes[0], 'tclsh test.tcl '); 
    fclose($pipes[0]); 

    echo stream_get_contents($pipes[1]); 
    fclose($pipes[1]); 

// echo fread($pipes[1],1024).'<hr>'; 


    proc_close($process); 
} 
?> 


//sum.tcl 
proc sum {arg1 arg2} { 
    set x [expr {$arg1 + $arg2}]; 
    return $x 
} 

//test.tcl 
puts " the sum is [sum 10 9 ] " 
+0

오류 파이프에서 무엇을 볼 수 있습니까? –

+0

"tclsh"는 Tcl 명령이 아닙니다. "source test.tcl"을 원하셨습니까? –

+0

오류가 표시되지 않습니다. 방금 브라우저에 빈 페이지가 생깁니다. tclsh는 명령이며 tcl 파일을 실행하는 데 사용됩니다. – Vidya

답변

1

PHP 코드? 그렇지 않으면 함수 호출의 모든 반환 값을 확인하십시오. 예를 들어 첫 번째 fwrite()가 실패하면 일찍 실패해야합니다.

+0

나는 이것을 얻었다. 모든 도움에 감사드립니다. – Vidya

+2

여기에 답변을 게시하십시오. –