[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Сигналы для управления заданиями

В ОС  UNIX System  V Версия  4 доступны  сигналы,  которые  полезны  в
прикладных программах, реализующих интерактивное управление процессами
первого плана  (foreground) и  фоновыми (background)  процессами.  При
помощи этих  сигналов интерпретатор  shell SVR4 позволяет пользователю
делать  такие  операции,  как  приостановка  процесса  первого  плана,
перевод его  в фоновый  режим, или  фонового процесса  на первый  план
(foreground). Два  сигнала, SIGSTOP  и  SIGTSTP  вынуждают  получивший
процесс остановиться. SIGTSTP генерируется терминальным драйвером, при
нажатии клавиши,  заданной в  c_cc[VSUSP] (<CTRL Z> по умолчанию) (см.
termios(2), ioctl(2),  <termios.h>).  Посланный  с  терминала  SIGTSTP
заставляет  процессы,   входящие  в   основную   (foreground)   группу
остановиться.  SIGCONT   возобновляет   выполнение   приостановленного
процесса.

Если фоновый  процесс не  задерживает и не игнорирует SIGTTIN, система
будет посылать SIGTTIN этому процессу при попытках выполнить read(2) с
управляющего  терминала.   Если  процесс  игнорирует  или  задерживает
SIGTTIN, read(2)  возвращает неуспех,  и устанавливает  errno в EIO, в
отличие от предыдущих версий ОС UNIX System V. Там read(2) с терминала
из фонового  процесса немедленно  возвращал управление  с кодом  0, не
прочитав ни одного байта.

В ранних  версиях стандартный  вывод фонового  процесса просто  шел на
терминал, если  не был  перенаправлен. А  в SVR4  фоновый процесс  при
попытке выдачи  на терминал, если установлен бит TOSTOP в поле c_lflag
(см. termios(2),  ioctl(2),  <termios.h>),  получает  сигнал  SIGTTOU.
Обычно, это  вынуждает фоновый  процесс приостановиться.  Однако, если
процесс игнорирует  или задерживает  SIGTTOU, выдача  на терминал все-
таки происходит.
                   СИГНАЛЫ ДЛЯ УПРАВЛЕНИЯ ЗАДАНИЯМИ

Имя        Значение       Умолчание         Событие


SIGSTOP         23         Stop            Остановка (сигналом)

SIGTSTP         24         Stop            Остановка (пользователем)

SIGCONT         25         Ignore          Продолжение исполнения

SIGTTIN         26         Stop            Остановка при вводе с
                                           терминала

SIGTTOU         27         Stop            Остановка при выводе на
                                           терминал