Procedure SigAction (Signum : Integer; Var Act,OldAct : PSigActionRec) ;
Changes the action to take upon receipt of a signal. Act and Oldact are pointers to a SigActionRec record.
SigNum specifies the signal, and can be any signal except SIGKILL or SIGSTOP.
If Act is non-nil, then the new action for signal SigNum is taken from it. If OldAct is non-nil, the old action is stored there.
Sa_Handler may be SIG_DFL for the default action or SIG_IGN to ignore the signal.
Sa_Mask Specifies which signals should be ignord during the execution of the signal handler.
Sa_Flags Speciefies a series of flags which modify the behaviour of the signal handler. You can 'or' none or more of the following :
LinuxError is used to report errors.
SigProcMask, SigPending, SigSuspend, Kill, Sigaction (2)
Program example57;
{ Program to demonstrate the SigAction function.}
{
do a kill -USR1 pid from another terminal to see what happens.
replace pid with the real pid of this program.
You can get this pid by running 'ps'.
}
uses Linux;
Var
oa,na : PSigActionRec;
Procedure DoSig(sig : Longint);cdecl;
begin
writeln('Receiving signal: ',sig);
end;
begin
new(na);
new(oa);
na^.Sa_Handler:=@DoSig;
na^.Sa_Mask:=0;
na^.Sa_Flags:=0;
na^.Sa_Restorer:=Nil;
SigAction(SigUsr1,na,oa);
if LinuxError<>0 then
begin
writeln('Error: ',linuxerror,'.');
halt(1);
end;
Writeln ('Send USR1 signal or press <ENTER> to exit');
readln;
end.