2009-08-24 9 views
0

J'essaie d'exécuter un script TCL à partir de PHP. J'utilise PHP proc_open pour la communication. Mais je suis incapable d'obtenir le résultat du script tcl. Quelqu'un peut-il passer en revue le code et me dire où je me trompe?Utilisation de la fonction proc_open dans PHP

code 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

Que voyez-vous sur le tuyau d'erreur? –

+0

"tclsh" n'est pas une commande Tcl. Voulez-vous dire "source test.tcl"? –

+0

Je ne vois aucune erreur. Je viens d'obtenir une page blanche sur le navigateur. tclsh est une commande, elle est utilisée pour exécuter un fichier tcl. – Vidya

Répondre

1

Vous n'êtes pas passer à l'application des nouvelles lignes (fwrite($pipes[0], "source sum.tcl\n")), pourrait-il être la cause? Sinon, assurez-vous de vérifier toutes les valeurs de retour de vos appels de fonction. Vous devriez échouer tôt, si le premier fwrite() échoue, par exemple.

+0

J'ai obtenu celui-ci. Merci pour votre aide. – Vidya

+2

Veuillez poster votre réponse ici. –

Questions connexes