Телекоммуникационные технологии


Краткий справочник по командам UNIX - часть 5


br>

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

Так, когда пользователь вводит команду ls, текущий процесс shell осуществляет вызов fork, порождая новый процесс - копию shell. Порожденный процесс осуществит вызов exec, указав в качестве параметра имя исполняемого файла (ls). Ls замещает shell, а по завершении работы процесс уничтожается.

Сигналы

Сигналы служат для того, чтобы передавать от одного процесса к другому или от ядра к какому-то процессу, уведомление о происхождении некоторого события. Примером такого события может быть нажатие клавиши мышки или нажатие клавиш <Ctrl><C> (SIGINIT)или <Ctrl><Alt><Del>.

Для отправления сигнала служит команда kill pid, где sig_no - номер или символическое название сигнала, pid - идентификатор процесса, которому адресован сигнал. Для остановки процесса, выполняемого в фоновом режиме можно послать сигнал SIGTERM. Например, kill $!, где $! - переменная, где хранится идентификатор процесса (PID), запущенного последним.

Таблица 1. Cигналы

Имя сигнала Функция по умолчанию Описание
SIGABRT Завершение + ядро Результат системного вызова abort
SIGALRM Завершение Результат срабатывания таймера, установленного системными вызовом alarm или setitimer
SIGBUS Завершение + ядро Результат аппаратной ошибки. Сигнал посылается при обращении к виртуальному адресу, для которого отсутствует соответствующая физическая страница памяти.
SIGCHLD Игнорирование Сообщает родительскому процессу о завершении исполнения дочернего
SIGEGV Завершение + ядро Формируется при попытке обращения к неверному адресу или области памяти, для которой у процесса нет привилегий.
SIGFPE Завершение + ядро Сигнал возникает в случае деления на нуль или при переполнении в операциях с плавающей запятой.
SIGHUP Завершение Посылается хозяину сессии, связанной с консолью, когда ядро обнаружит, что терминал отключился. Сигнал передается всем процессам текущей группы при завершении сессии хозяина. Этот сигнал иногда используется для взаимодействия процессов, например, для уведомления демонов о необходимости обновления конфигурационных данных.
SIGILL Завершение + ядро Посылается ядром при попытке процесса выполнить недопустимую команду.
SIGINT Завершение Посылается ядром всем процессам при нажатии комбинации клавиш <Del> или <Crtl><C>.
SIGKILL Завершение Сигнал прерывает выполнение процесса. Перехват или игнорирование этого сигнала невозможно.
SIGPIPE Завершение Результат попытки записи в канал или сокет, когда получатель данных закрыл соответствующий дескриптор.
SIGPOLL Завершение Результат реализации определенного события для устройства, которое опрашивается.
SIGPWR Игнорирование Результат угрозы потери питания (при переключении на UPS).
SIGQUIT Завершение + ядро Посылается ядром всем процессам текущей группы при нажатии клавиш <Crtl><\>.
SIGSTOP Стоп Посылается всем процессам текущей группы при нажатии пользователем комбинации клавиш <Crtl><Z>. Процесс останавливается.
SIGSYS Завершение + ядро Посылается ядром при попытке некорректного системного вызова
SIGTERM Завершение Предупреждение о скорой ликвидации процесса (ликвидировать временные файлы, прервать текущие обмены) Команда kill посылает именно этот сигнал.
SIGTTIN Стоп Формируется ядром при попытке фонового процесса выполнить чтение с консоли.
SIGTTOU Стоп Формируется ядром при попытке фонового процесса выполнить запись в консоль
SIGUSR1 Завершение Предназначен для прикладных задач, как средство взаимодействия процессов.
SIGUSR2 Завершение Предназначен для прикладных задач, как средство взаимодействия процессов.
<




Начало  Назад  Вперед



Книжный магазин