From 75482ec872ad53c0d271aa0c85df8933bbff42cc Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 5 Oct 2015 15:51:27 +0200 Subject: sigint eingebaut --- Physikunit.pas | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Physikunit.pas b/Physikunit.pas index 46c5949..18c0a08 100644 --- a/Physikunit.pas +++ b/Physikunit.pas @@ -168,7 +168,8 @@ type fortschrittsAnzeige: boolean; ausgabeDateien: array of tAusgabeDatei; public - gotSigusr1,gotSigterm: boolean; + gotSigusr1,gotSigterm, + gotSigint: boolean; constructor create(inName: string; protokollant: tProtokollant; name: string); destructor destroy; override; function iteriereSchritt(start: double; var zeitPhysik,zeitDatei: double): boolean; // noch nicht zu Ende? @@ -1160,9 +1161,11 @@ var i,j: longint; pro: tProtokollant; {$ENDIF} begin - if simulation.gotSigterm then begin + if simulation.gotSigterm or + simulation.gotSigint then begin abbrechen; simulation.gotSigterm:=false; + simulation.gotSigint:=false; end; if abbruch then begin @@ -1260,6 +1263,7 @@ begin fortschrittsAnzeige:=false; gotSigusr1:=false; gotSigterm:=false; + gotSigint:=false; dP:=-1; pMax:=3; @@ -1543,7 +1547,8 @@ begin na^.sa_Restorer := Nil; {$endif} if (fPSigaction(SIGUSR1, na, nil) <> 0) or - (fPSigaction(SIGTERM, na, nil) <> 0) then begin + (fPSigaction(SIGTERM, na, nil) <> 0) or + (fPSigaction(SIGINT, na, nil) <> 0) then begin pro.schreibe('Fehler: '+inttostr(fpgeterrno)+'.'); raise exception.create('Fehler in tSimulation.create!'); end; @@ -1633,6 +1638,11 @@ begin for i:=0 to length(simulationen)-1 do simulationen[i].gotSigterm:=true; end; + SIGINT: begin + writeln('received SIGINT!'); + for i:=0 to length(simulationen)-1 do + simulationen[i].gotSigint:=true; + end; end{of case}; end; -- cgit v1.2.3-70-g09d2