J'ai eu un problème équivalent, j'avais réglé ça comme ça :
global subproc
switch $tcl_platform(platform) {
windows {
set subproc(input) [open "| $path" r+]
set subproc(output) $subproc(input)
gets $subproc(output) ligne
gets $subproc(output) ligne
gets $subproc(output) ligne
gets $subproc(output) ligne
fconfigure $subproc(output) -blocking 0
}
default {
pipe pin_r pin_w
pipe pout_r pout_w
set f [fork]
if {$f == 0} {
close stdin
dup $pin_r stdin
close $pin_w
close stdout
dup $pout_w stdout
close $pout_r
execl $path
exit
}
set subproc(input) $pin_w
close $pin_r
set subproc(output) $pout_r
close $pout_w
set l [gets $subproc(output)]
fconfigure $pout_r -blocking 0
}
}
Il y a surement mieux mais ca peut te donner des idees
PS: le code tournait sans problème sur Linux, W98 et W2000 avec Tcl/TK d'Active).
# Re: Pipes nommés sous Windows
Posté par Laurent Mazet (site web personnel) . En réponse au journal Pipes nommés sous Windows. Évalué à 2.
global subproc switch $tcl_platform(platform) { windows { set subproc(input) [open "| $path" r+] set subproc(output) $subproc(input) gets $subproc(output) ligne gets $subproc(output) ligne gets $subproc(output) ligne gets $subproc(output) ligne fconfigure $subproc(output) -blocking 0 } default { pipe pin_r pin_w pipe pout_r pout_w set f [fork] if {$f == 0} { close stdin dup $pin_r stdin close $pin_w close stdout dup $pout_w stdout close $pout_r execl $path exit } set subproc(input) $pin_w close $pin_r set subproc(output) $pout_r close $pout_w set l [gets $subproc(output)] fconfigure $pout_r -blocking 0 } }Il y a surement mieux mais ca peut te donner des idees PS: le code tournait sans problème sur Linux, W98 et W2000 avec Tcl/TK d'Active).