Мне нужно иметь двухстороннюю связь между потоками в Tcl, и все, что я могу получить, - это один путь с передачей параметров в качестве моего единственного главного канала связи помощника. Вот что у меня есть:
proc ExecProgram { command } {
if { [catch {open "| $command" RDWR} fd ] } {
#
# Failed, return error indication
#
error "$fd"
}
}
Для вызова tclsh83, например, ExecProgram "tclsh83 testCases.tcl TestCase_01"
В файле testCases.tcl я могу использовать переданную информацию. Например:
set myTestCase [lindex $argv 0]
В testCases.tcl я могу выложить в трубу:
puts "$myTestCase"
flush stdout
И получить, что помещает в главный поток, используя идентификатор процесса:
gets $app line
... внутри цикла.
Что не очень хорошо. И не двусторонний.
Кто-нибудь знает простой способ двусторонней связи для tcl в Windows между двумя потоками?