Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужна помощь FreeePascal 2.2.0 + FreeBSD 6.3, FreeePascal 2.2.0 + FreeBSD 6.3 
:(
    Опции темы
vovksextra
Дата 13.4.2008, 03:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Вообщем проблема такая

Если в коде не использовать запуск нити (выполнение DoRun (в ней пока безконечный цикл)), то по нажанитю Ctrl+C 
я корректно выхожу из цикла и вижу надпись  'Stop server'


Если создается нить - то при нажатии   Ctrl+C просто останавливается выполнение приложения 

Мне нужно правильно перехватить SIGINT 

Код


procedure SignalsHandler(signal: longint);cdecl;
begin
  writeln;
  writeln('Server down. With SIG: ',IntToStr(signal));
  SIG := True;
end;

begin
  
  writeln('Start server');   
  
  fpSignal( SIGTERM, @SignalsHandler );
  fpSignal( SIGINT, @SignalsHandler );
  
  write('Start UPD agent');  
  
  {UA:=TUDPAgent.Create(5555);
  if UA.Start 
    then 
     writeln('-ok')
    else  
     writeln('-error');}
     
  while not SIG do
   begin
   end;
  
  //fpSigsuspend( SigSet );
  
  {UA.free;}
  writeln;
  writeln('Stop server');
end.


Вырезка
 из модуля

Код

function TUDPAgent.Start:boolean;
Var
 Attr: TThreadAttr;
 res: integer;
begin
 
 result:=false;
 
 if isRunning then
  begin
   FStrError:='Error UDP agent. With error: agent alread running.';
   exit;
  end;

  isStoped:=false;

  {pthread_attr_init(@attr);
  pthread_attr_setdetachstate(@attr,1);}

  res:=pthread_create(@ThreadID,nil,@DoRun,nil);
  
  if res<>0 then
   begin
    FStrError:='Error UDP agent: Cannot start thread.';
   end;
  
  result := true;
  
end;


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.