Системное программирование в UNIX средствами Free Pascal

Пример аккуратный выход


Предположим, что программа использует временный рабочий файл. Следующая простая процедура удаляет файл:

(* Аккуратный выход из программы *)

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 другими необходимыми для завершения операциями.



Содержание раздела