Труднее, но с большим контролем: и — КиберПедия 

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Труднее, но с большим контролем: и

2021-01-29 80
Труднее, но с большим контролем: и 0.00 из 5.00 0 оценок
Заказать работу

 

Основным строительным блоком является системный вызов:

 

После того, как возвратится, программа продолжает работать. Однако, когда истекают секунд, ядро посылает процессу. Действием по умолчанию является завершение процесса, но вы скорее всего вместо этого установите обработчик сигнала для.

Возвращаемое значение либо 0, либо, если был установлен предыдущий сигнальный интервал, число секунд, остающихся до его завершения. Однако, для процесса имеется лишь один такой сигнальный интервал; предыдущий отменяется, а новый помещается на его место.

Преимуществом здесь является то, что со своим установленным обработчиком вы можете делать при поступлении сигнала все, что хотите. Недостаток же в том, что приходится быть готовым к работе в нескольких контекстах: основном контексте и контексте обработчика сигнала.

 

Простой и легкий:

 

Более легкий способ ожидания истечения фиксированного промежутка времени заключается в использовании функции:

 

Возвращаемое значение равно 0, если процесс проспал все отведенное время. В противном случае возвращается оставшееся для сна время. Это последнее значение может возникнуть в случае, если появился сигнал, пока процесс дремал.

 

ЗАМЕЧАНИЕ. Функция часто реализуется через сочетание, и. Такой подход делает опасным смешивание с вашим собственным вызовом (или расширенной функцией, описанной в разделе 14.3.3 «Интервальные таймеры и») Чтобы теперь узнать о функции, см. раздел 14.3.4 «Более точные паузы:».

 

10.8.2. Сигналы, управляющие заданиями

 

Несколько сигналов используются для реализации управления заданиями – возможностью начинать и останавливать задания и перемещать их из фонового режима на передний план и обратно. На уровне пользователя вы, несомненно, проделывали это: использовали CTRL‑Z для остановки задания, для помещения его в фоновый режим, а иногда использовали для перемещения фонового или остановленного задания на передний план.

Секция 9.2.1 «Обзор управления заданиями» описывает в общем, как осуществляется управление заданиями. Данный раздел завершает обзор, описав сигналы управления заданиями. поскольку иногда может понадобиться перехватить их непосредственно:

 

Этот сигнал осуществляет «остановку терминала». Это сигнал, который ядро посылает процессу, когда пользователь за терминалом (или окном, эмулирующим терминал) набирает определенный ключ. Обычно это CTRL‑Z, аналогично тому, как CTRL‑C обычно посылает.

Действием по умолчанию для является остановка (переход в приостановленное состояние) процесса. Однако, вы можете перехватить этот сигнал, как любой другой. Хорошая мысль сделать это, если ваша программа изменяет состояние терминала. Например, рассмотрите экранные редакторы или Emacs, которые переводят терминал в посимвольный режим. По получении, они должны восстановить терминал в его нормальный построчный режим, а затем приостановиться сами.

 

Этот сигнал также останавливает процесс, но он не может быть перехвачен, заблокирован или проигнорирован. Он может быть использован в качестве последнего средства вручную (посредством команды) или программным путем. Например, только что обсужденный обработчик после восстановления состояния терминала мог бы затем использовать для остановки процесса ''.

,

Ранее эти сигналы были определены как «фоновое чтение из tty» и «фоновая запись в tty». tty является устройством терминала. В системах управления заданиями процессы, работающие в фоновом режиме, заблокированы от попыток чтения с терминала или записи в него. Когда процесс пытается осуществить любую из этих операций, ядро посылает ему соответствующий сигнал. Для обоих действием по умолчанию является остановка процесса. При желании можно перехватить эти сигналы, но для этого редко бывает необходимость.

 

Этот сигнал вновь запускает остановленный процесс. Если процесс не остановлен, он игнорируется. При желании его можно перехватить, но опять‑таки для большинства программ мало причин для осуществления этого. Продолжая наш пример, обработчик для экранного редактора должен перед возвращением вернуть терминал обратно в посимвольный режим.

Когда процесс остановлен, любые другие посланные ему сигналы становятся ожидающими. Исключением является, который всегда доставляется процессу и который не может быть перехвачен, заблокирован или проигнорирован. В предположении, что были посланы сигналы кроме, по получении ожидающие сигналы доставляются, а процесс продолжает выполнение после того, как они будут обработаны.

 


Поделиться с друзьями:

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.