[<<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 Остановка при выводе на
терминал