У меня есть графический интерфейс, построенный в Tcl/Tk, который имеет кнопку, которая будет деформировать каталог. Каталог может быть очень большим, поэтому я не хочу блокировать GUI, пока он ждет.Тар файлов в отдельном процессе с использованием open и vwait
Для этого я использую open для командной строки и vwait, однако GUI по-прежнему становится неактуальным во время работы tar. Это мой код:
set ::compress_result 0
set pipe [open "|$tar_executable -cf $folder_to_tar.tar $folder_to_tar" r+]
fileevent $pipe readable "set ::compress_result [gets $pipe line]"
vwait ::compress_result
set return_value $::compress_result
unset ::compress_result
close $pipe
Почему это до сих пор блокирует цикл событий Tcl и запирать GUI?
Перед тем, как погрузиться внутрь, есть ли причина использовать режим 'r +'? Я бы ожидал здесь 'r' (что фактически не возможно, так как оно по умолчанию). –
Это именно то, что я скопировал с tcl wiki. ха-ха. – TheBat