
- •Системные вызовы семейства exec
- •Прототипы функций (1)
- •Прототипы функций (2)
- •execl()
- •execlp()
- •execle()
- •execv()
- •execvp()
- •execve()
- •Семейство функций exec()
- •main
- •Окружение процесса
- •Переменные окружения
- •Переменные окружения
- •Системные вызовы (1)
- •Системные вызовы (2)
- •Системные вызовы (3)
- •Идентификаторы
- •euid
- •suid
- •В большинстве случаев все идентификаторы процесса, связанные с пользователями – uid, euid и
- •При выполнении exec
- •Наследование пользовательских идентификаторов
- •Файл
- •Системные вызовы
- •Программы,
- •Сигналы
- •Назначение сигналов
- •Надежные и ненадежные
- •Свойства сигналов
- •Причины отправки
- •По инициативе ядра
- •Доставка сигнала
- •Когда core-файл не
- •Диспозиция по умолчанию
- •Перехват сигнала
- •Сигналы (1)
- •Сигналы (2)
- •Сигналы (3)
- •Сигналы (4)
- •SIGPIPE
- •SIGCHLD
- •SIGUSR1, SIGUSR2
- •SIGALRM
- •Надежные сигналы
- •Множество сигналов
- •Библиотечные функции
- •Управление маской
- •Работа с сигналами
- •Работа с диспозицией
- •Структура sigaction
- •Флаги sa_flags
- •Доставка и обработка сигнала
- •Функция ядра issig() (1)
- •Функция ядра issig() (2)
- •Группы и сеансы
- •Группы и сеансы (1)
- •Группы и сеансы (2)
- •Группы и сеансы (3)
- •Системные вызовы (группы)
- •Системные вызовы (сеансы)
- •Текущие и фоновые
- •Листинг ps
- •Процессы-демоны
- •Демоны
- •init
- •Последовательность шагов (1)
- •Последовательность шагов (2)
- •Последовательность шагов (3)
- •Известные демоны

Системные вызовы (группы)
pid_t getpgrp();
pid_t getpgid(pid_t);
int setpgrp();

Системные вызовы (сеансы)
pid_t getsid(pid_t);
pid_t setsid();

Текущие и фоновые
группы, управляющий терминал

Листинг ps

Процессы-демоны

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

init
Самый главный процесс в системе. pid=1 Является отцом всех осиротевших процессов. Активно работает в момент начальной загрузки системы и при переходе с уровня на уровень. В остальное время спит. Смерть init приводит к состоянию kernel panic.

Последовательность шагов (1)
•Снять ассоциацию с управляющим терминалом (Демон не должен получать SIGHUP от терминала)
•Закрыть все открытые файлы (Демон может выводить сообщения только через syslog)

Последовательность шагов (2)
•Сменить текущий каталог на корневой (Демон не должен мешать размонтированию файловых систем)
•Выполнить fork, родительский процесс exit, код в тело дочернего процесса (ppid = 1)

Последовательность шагов (3)
•Установить необходимые обработчики сигналов (Демон обычно управляется сигналами SIGHUP, SIGTERM, SIGUSR1)