Как перехватывать kernel-signals?

Previous  Top  Next

    
 

 

 

Code:

program TestSignals;

 

{$APPTYPE CONSOLE}

 

uses

Libc;

 

var

bTerminate: Boolean;

 

procedure SignalProc(SigNum: Integer); cdecl;

begin

case SigNum of

   SIGQUIT: 

     begin

       WriteLn('signal SIGQUIT');

       bTerminate := true;

     end;

   SIGUSR1: WriteLn('signal SIGUSR1');

   else

     WriteLn('not handled signal');

end;

signal(SigNum, SignalProc); // catch the signal again

end;

 

begin

bTerminate := false;

 

signal(SIGQUIT, SignalProc); // catch the signal SIGQUIT to procedure SignalProc

signal(SIGUSR1, SignalProc); // catch the signal SIGUSR1 to procedure SignalProc

 

repeat

   sleep(1);

until bTerminate;

end.

 

©Drkb::04591

Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php