Есть программа на перле использующая TK По нажатию на кнопку запускается подпрограмма в теле которой например лежит алгоритм поиска определённого слова в файлах хранящихся на винте При нахождении совпадения подпрограмма пишет в текстбокс имя и путь к этому файлу Проблема в том после запуска этой самой подпрограммы кнопка залипает, окно становится недоступным и приходится ждать завершения подпрограммы Как сделать так, что бы эта подпрограмма выполнялась прозрачно не отнимая управление у окна?
Если попадается большой файл $main_window->update не катит поскольку на время поиска в этом файле управление всё равно отнимается. Можно про fork подробнее? Неплохо бы пример
Code: #!/usr/bin/perl use strict; use Tk; my $mw = MainWindow->new; $mw->geometry("220x150"); $mw->Button( -text => "Sleep", -command => \&action, )->pack; MainLoop; sub action { my $chld = fork(); if ($chld == 0) { while(1) { print 123; sleep 1; } } else { return } }
Работает, но как теперь послать окну инфу? Например: Code: #!/usr/bin/perl use Tk; use Tk::ROtext; $mw = MainWindow->new; $mw->geometry("400x400"); $print = $mw->Scrolled('ROText',-scrollbars=>'e',-height=>22,-width=>45)->pack(); $mw->Button( -text => "Sleep", -command => \&action, )->pack; MainLoop; sub action { $chld = fork(); if ($chld == 0) { while(1) { $print->insert('end',"123"); sleep 1; } } else { return } А то ошибка