[Overview][Constants][Types][Procedures and functions][Variables] |
Install signal handler
Source position: oldlinux.pp line 1480
procedure SigAction( |
Signum: LongInt; |
Act: PSigActionRec; |
OldAct: PSigActionRec |
); |
Changes the action to take upon receipt of a signal. Actand Oldactare pointers to a SigActionRecrecord. SigNumspecifies the signal, and can be any signal except SIGKILLor SIGSTOP.
If Actis non-nil, then the new action for signal SigNumis taken from it. If OldActis non-nil, the old action is stored there. Sa_Handlermay be SIG_DFLfor the default action or SIG_IGNto ignore the signal. Sa_MaskSpecifies which signals should be ignord during the execution of the signal handler. Sa_FlagsSpeciefies a series of flags which modify the behaviour of the signal handler. You can 'or' none or more of the following :
LinuxErroris used to report errors.
|
Set list of blocked signals |
|
|
Return set of currently pending signals |
|
|
Set signal mask and suspend process till signal is received |
|
|
Send a signal to a process |
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 oldlinux; Var oa,na : PSigActionRec; Procedure DoSig(sig : Longint);cdecl; begin writeln('Receiving signal: ',sig); end; begin new(na); new(oa); na^.Handler.sh:=@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.