Содержание
- 2. Прототипы функций (1) int execl(const char *, const char *, …); int execlp(const char *, const
- 3. Прототипы функций (2) int execv(const char *, char * const[]); int execvp(const char *, char *
- 4. execl() Список параметров Строго задается абсолютное либо относительное имя Окружение сохраняется
- 5. execlp() Список параметров Поиск программы осуществляется в соответствии с переменной окружения PATH Окружение сохраняется
- 6. execle() Список параметров Строго задается абсолютное либо относительное имя Окружение копируется из параметров системного вызова
- 7. execv() Вектор параметров Строго задается абсолютное либо относительное имя Окружение сохраняется
- 8. execvp() Вектор параметров Поиск программы осуществляется в соответствии с переменной окружения PATH Окружение сохраняется
- 9. execve() Вектор параметров Строго задается абсолютное либо относительное имя Окружение копируется из параметров системного вызова
- 10. Семейство функций exec()
- 11. main int main(int argc, char * argv[], char * envp[]); argc – количество аргументов командной строки
- 12. Окружение процесса Набор текстовых строк вида: переменная=значение Обычно используются для передачи текстовой информации между процессами.
- 13. Переменные окружения
- 14. Переменные окружения PATH – пути поиска исполнимых файлов HOME – домашний каталог пользователя PS1 – приглашение
- 15. Системные вызовы (1) char * getenv(const char * name); вернуть значение переменной int putenv(char * string);
- 16. Системные вызовы (2) int setenv(const char * name, const char * value, int overwrite); добавить /
- 17. Системные вызовы (3) int clearenv(); полностью очистить окружение – глобальная переменная environ получит значение NULL
- 18. Идентификаторы пользователя uid – реальный идентификатор пользователя euid – эффективный идентификатор пользователя suid – сохраненный идентификатор
- 19. uid Определяет «истинного» владельца процесса, того на чей счет относятся потребляемые процессом ресурсы.
- 20. euid Определяет права доступа к объектам системы (файлы (особенности Linux), процессы, IPC-средства.
- 21. suid Предоставляет возможность переключения euid между значениями uid и suid.
- 22. В большинстве случаев все идентификаторы процесса, связанные с пользователями – uid, euid и suid совпадают. Если
- 23. При выполнении exec Если на запускаемый исполнимый файл (не скрипт) установлен бит смены идентификатора пользователя (suid-бит),
- 24. Наследование пользовательских идентификаторов
- 25. Файл -rwsr-xr-x 1 max group 3765 Jan 19 20:45 prog1 Процесс до exec uid=579 (user), euid=579
- 26. Системные вызовы int getuid(); - получить uid int geteuid(); - получить euid int setuid(int); - установить
- 27. Программы, использующие suid-бит su sudo passwd mount umount ping traceroute
- 28. Сигналы
- 29. Назначение сигналов Простейший способ межпроцессного взаимодействия. Предназначены для информирования процесса о наступлении какого-либо события.
- 30. Надежные и ненадежные Отправка сигнала Доставка сигнала
- 31. Свойства сигналов Уникальный номер (обычно в диапазоне от 1 до 32) (номера больше 32 используются для
- 32. Причины отправки По инициативе процесса – системный вызов int kill(int, int); По инициативе ядра
- 33. По инициативе ядра Нажатие на управляющем терминале определенных клавиш (драйвер терминала) Аппаратные особые ситуации Программные состояния
- 34. Доставка сигнала (диспозиция) По умолчанию (обычно завершение процесса с созданием или без создания core-файла) Игнорирование сигнала
- 35. Когда core-файл не создается Исполняемый файл процесса имеет установленный suid-бит и реальный владелец процесса не совпадает
- 36. Диспозиция по умолчанию Процесс завершается (переходит в состояние зомби) и в младший байт статуса завершения записывается
- 37. Перехват сигнала Системный вызов void (*signal(int sig, void (*disp)(int))) (int); Функция-обработчик void disp(int sig);
- 38. Сигналы (1) SIGKILL (9) SIGSTOP SIGCONT
- 39. Сигналы (2) SIGINT (2) SIGQUIT (3) SIGTSTP SIGTTIN SIGTTOU
- 40. Сигналы (3) SIGBUS SIGSEGV SIGFPE SIGILL SIGSYS
- 41. Сигналы (4) SIGHUP (1) SIGTERM (15)
- 42. SIGPIPE Сигнал посылается процессу при некорректной работе с каналом или сокетом. Более подробно будет рассмотрен в
- 43. SIGCHLD Сигнал посылается процессу-родителю при завершении любого из его сыновей. Явное игнорирование сигнала говорит системе, что
- 44. SIGUSR1, SIGUSR2 Нет специального действия, закрепленного за этими сигналами. Поэтому процессы могут использовать их для взаимной
- 45. SIGALRM Процесс может с помощью системного вызова alarm() зарегистрировать будильник. По истечении заданного времени процессу будет
- 46. Надежные сигналы Дополнительные возможности: Блокирование доставки сигнала Рекурсивная обработка Получение дополнительной информации вместе с сигналом Управление
- 47. Множество сигналов Специальный тип sigset_t Внутренняя реализация этого типа не документируется (обработка с помощью специальных функций).
- 48. Библиотечные функции int sigemptyset(sigset_t *); int sigfillset(sigset_t *); int sigaddset(sigset_t *, int); int sigdelset(sigset_t *, int);
- 49. Управление маской сигналов int sigprocmask(int how, sigset_t * set, sigset_t * oset); how SIG_BLOCK SIG_UNBLOCK SIG_SETMASK
- 50. Работа с сигналами int sigpending(sigset_t *); получение сигналов, ожидающих доставки int sigsuspend(sigset_t *); int pause(); ожидание
- 51. Работа с диспозицией int sigaction(int sig, const struct sigaction * act, struct sigaction * oact);
- 52. Структура sigaction void (* sa_handler) () void (* sa_sigaction) (int, siginfo_t *, void *) sigset_t sa_mask
- 53. Флаги sa_flags SA_SIGINFO SA_RESETHAND (SA_ONESHOT) SA_NODEFER SA_RESTART
- 54. Доставка и обработка сигнала Вызов функции ядра issig() от имени процесса приводит к действию по умолчанию
- 55. Функция ядра issig() (1) При возврате из режима ядра в режим задачи после обработки системного вызова
- 56. Функция ядра issig() (2) После пробуждения от сна с приоритетом, допускающим прерывание сигналом
- 57. Группы и сеансы
- 58. Группы и сеансы (1) Идентификаторы pgid – идентификатор группы процессов (не путать с gid) sid –
- 59. Группы и сеансы (2) Каждый сеанс включает одну или несколько групп. Не может группа включать процессы
- 60. Группы и сеансы (3) Если происходит зависание терминала, то лидеру сеанса посылается сигнал SIGHUP. Если умирает
- 61. Системные вызовы (группы) pid_t getpgrp(); pid_t getpgid(pid_t); int setpgrp();
- 62. Системные вызовы (сеансы) pid_t getsid(pid_t); pid_t setsid();
- 63. Текущие и фоновые группы, управляющий терминал
- 64. Листинг ps
- 65. Процессы-демоны
- 66. Демоны Специальные системные процессы работающие длительное время, не связанные с терминалами. Управление обычно осуществляется при помощи
- 67. init Самый главный процесс в системе. pid=1 Является отцом всех осиротевших процессов. Активно работает в момент
- 68. Последовательность шагов (1) Снять ассоциацию с управляющим терминалом (Демон не должен получать SIGHUP от терминала) Закрыть
- 69. Последовательность шагов (2) Сменить текущий каталог на корневой (Демон не должен мешать размонтированию файловых систем) Выполнить
- 70. Последовательность шагов (3) Установить необходимые обработчики сигналов (Демон обычно управляется сигналами SIGHUP, SIGTERM, SIGUSR1)
- 72. Скачать презентацию