summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Physikunit.pas16
1 files 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;