(* Безопасное завершение программы *)
uses linux,stdio;

procedure g_exit(s:integer);cdecl;
begin
  unlink ('tempfile');
  writeln (stderr, 'Прерывание - выход из программы');
  halt(1);
end;

var
  act:sigactionrec;
  fd:integer;
begin
  fd := fdcreat ('tempfile', 0);
  act.handler.sh := @g_exit;
  sigaction (SIGINT, @act, nil);
  sleep (20);
  writeln ('main complete:');
  fdclose (fd);
  unlink ('tempfile');
  halt(0);
end.
