Description: |
In wish 8.6.8 on Windows, the 2nd, 3rd, and 4th files that are opened within a thread return the channel names stdin, stdout, and stderr. This does not happen in the main thread, in tclsh 8.6.8, in wish 8.5.*, or on Linux.
For example, the following script writes the first 5 opened channel names to a log file:
package require Thread
set tid [::thread::create]
::thread::send $tid {
set chan1 [open c:/temp/log.txt w]
set chan2 [open nul w]
set chan3 [open nul w]
set chan4 [open nul w]
set chan5 [open nul w]
puts $chan1 "chan1 = $chan1"
puts $chan1 "chan2 = $chan2"
puts $chan1 "chan3 = $chan3"
puts $chan1 "chan4 = $chan4"
puts $chan1 "chan5 = $chan5"
close $chan1
close $chan2
close $chan3
close $chan4
close $chan5
}
exit
The file c:/temp/log.txt will contain something like:
chan1 = file303b0c0
chan2 = stdin
chan3 = stdout
chan4 = stderr
chan5 = file3033160
I don't know if the problem is in Tcl, wish, or the Thread package, but I'm reporting it here.
|