2009-08-24 19 views
0

PHPからTCLスクリプトを実行しようとしています。私は通信のためにPHPのproc_openを使用しています。しかし、私はtclスクリプトから結果を得ることができません。 誰かがコードを読んで、どこが間違っているのか教えてもらえますか?あなたがアプリケーション(fwrite($pipes[0], "source sum.tcl\n"))に改行を渡していないPHPでproc_open関数を使用する

PHPコード

<?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

は、それが原因である可能性がありますか?それ以外の場合は、関数呼び出しのすべての戻り値を確認してください。たとえば、最初のfwrite()が失敗した場合は、早めに失敗するはずです。

+0

私はこれを手に入れました。すべての助けに感謝します。 – Vidya

+2

あなたの答えをここに投稿してください。 –

関連する問題