(* Блокировка сигналов -- демонстрирует вызов sigprocmask *)
uses linux,stdio;

var
  set1, set2:sigset_t;

begin
  (* Создать полный набор сигналов *)
  sigfillset (@set1);

  (* Создать набор сигналов, не включающий
   * сигналы SIGINT и SIGQUIT
   *)
  sigfillset (@set2);
  sigdelset (@set2, SIGINT);
  sigdelset (@set2, SIGQUIT);
  (* Некритический участок кода ... *)
  (* Установить блокировку всех сигналов *)
  sigprocmask (SIG_SETMASK, @set1, nil);
  (* Более критический участок кода ... *)
  (* Блокировка меньшего числа сигналов. *)
  sigprocmask (SIG_UNBLOCK, @set2, nil);
  (* Менее критический участок кода ... *)
  (* Отменить блокировку для всех сигналов *)
  sigprocmask (SIG_UNBLOCK, @set1, nil);
end.
