J'ai trouvé que la commande tcl exec renvoie la chaîne de stdout d'abord, puis stderr. Par exemple, mon "script de test" suivant génère des messages dans cet ordre:tcl exec lit d'abord stdout puis stderr?
puts "test started"
puts stderr "some non-fatal error goes to stderr"
puts "test passed"
Puis-je exécuter le script comme ceci:
set ret [ catch { exec sh -c $cmd } msg ]
et ce que je reçois de $ msg est:
test started
test passed
some non-fatal error goes to stderr
et cela me rend vraiment difficile d'obtenir le bon résultat.
Quelqu'un peut-il laisser se savoir s'il est possible d'obtenir les messages à la fois stdout et stderr dans l'ordre, et:
1) s'il vous plaît ne pas rediriger comme celui-ci, ce qui peut les obtenir tous pour effet:
set ret [ catch {exec $cmd >&log.txt} msg ]
2) Je dois appeler que script Tcl dans mon script tcl, désolé
3) Je ne peux pas la source du script de test .tcl directement becau Il ya d'autres scripts appelés entre les deux et il ne fonctionnera pas si mon script tcl source juste ce script tcl.
J'utilise tclsh 8.3
Je ne sais pas si cela demande trop. J'espère que quelqu'un peut comprendre cela. Merci.
Voir http://wiki.tcl.tk/stderr pour plus de conseils. –