Пример аккуратный выход
Предположим, что программа использует временный рабочий файл. Следующая простая процедура удаляет файл:
(* Аккуратный выход из программы *)
uses linux;
procedure g_exit(s:integer);cdecl;
begin
unlink ('tempfile');
writeln (stderr, 'Прерывание - выход из программы');
halt(1);
end;
Можно связать эту процедуру с определенным сигналом:
var
act:sigactionrec;
.
.
act.handler.sh := @g_exit;
sigaction (SIGINT, @act, nil);
Если после этого вызова пользователь нажмет клавишу прерывания, то управление будет автоматически передано процедуре g_exit. Можно дополнить процедуру g_exit другими необходимыми для завершения операциями.