ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Возврат управления граф. интерфейсу в Perl
  #1  
Старый 06.09.2009, 00:58
Аватар для UpsPig
UpsPig
Новичок
Регистрация: 22.06.2008
Сообщений: 22
Провел на форуме:
77488

Репутация: 2
По умолчанию Возврат управления граф. интерфейсу в Perl

Есть программа на перле использующая TK
По нажатию на кнопку запускается подпрограмма в теле которой
например лежит алгоритм поиска определённого слова в файлах хранящихся на винте
При нахождении совпадения подпрограмма пишет в текстбокс
имя и путь к этому файлу
Проблема в том после запуска этой самой подпрограммы кнопка залипает, окно становится недоступным и приходится ждать завершения подпрограммы
Как сделать так, что бы эта подпрограмма выполнялась прозрачно не отнимая управление у окна?
 
Ответить с цитированием

  #2  
Старый 06.09.2009, 01:45
Аватар для Kaimi
Kaimi
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

Например fork заюзать, либо вызывать $main_window->update по ходу поиска
 
Ответить с цитированием

  #3  
Старый 06.09.2009, 02:23
Аватар для UpsPig
UpsPig
Новичок
Регистрация: 22.06.2008
Сообщений: 22
Провел на форуме:
77488

Репутация: 2
По умолчанию

Если попадается большой файл $main_window->update не катит поскольку на время поиска в этом файле управление всё равно отнимается.

Можно про fork подробнее? Неплохо бы пример
 
Ответить с цитированием

  #4  
Старый 06.09.2009, 02:33
Аватар для Kaimi
Kaimi
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

Код:
#!/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
	}
}
 
Ответить с цитированием

  #5  
Старый 06.09.2009, 03:07
Аватар для UpsPig
UpsPig
Новичок
Регистрация: 22.06.2008
Сообщений: 22
Провел на форуме:
77488

Репутация: 2
По умолчанию

Работает, но как теперь послать окну инфу?
Например:
Код:
#!/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
	}
А то ошибка
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дешевый Хостинг SimBa Социальные сети 15 03.05.2009 14:54
Интерфейс управления портативной электроникой нового поколения fox_malder Мировые новости 0 14.12.2008 04:24
Опасность ошибок Perl недооценивалась? 1251soldier Мировые новости 0 01.12.2005 20:56
Books Perl FRAGNATIC PHP, PERL, MySQL, JavaScript 0 11.08.2005 16:58
Безопасность приложений на Perl k00p3r Чужие Статьи 0 12.06.2005 09:39



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ