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


         

Описание - часть 2


      ;

    else         (* родительский процесс *)

    begin

      writeln('Процесс tml с идентификатором ', pid);

      halt(0);

    end;

  end;

  (* Установить обработчик таймера *)

  act.handler.sh := @setflag;

  sigaction (SIGALRM, @act, nil);

  (* Установить таймер *)

  alarm (nsecs);

  (* Приостановить выполнение до получения сигнала ... *)

  pause;

  (* Если был получен сигнал SIGALRM, вывести сообщение *)

  if alarm_flag then

  begin

    write(BELLS);

    for j := 2 to paramcount do

      write(paramstr(j),' ');

    writeln;

  end;

  halt(0);

end.

Из этого примера можно получить представление о том, как работает подпрограмма sleep, вызывая вначале

alarm, а затем pause.

Упражнение 6.3. Напишите свою версию подпрограммы sleep. Она должна сохранить предыдущее состояние таймера и восстанавливать его при выходе. (Посмотрите полное описание процедуры sleep в справочном руководстве системы.)

Упражнение 6.4. Перепишите программу tml, используя свою версию процедуры sleep.




Содержание  Назад  Вперед