1.5. Действие команд fork, exec и exit на объекты IPC

1.5. Действие команд fork, exec и exit на объекты IPC

Нам нужно достичь понимания действия функций fork, exec и _exit на различные формы IPC, которые мы обсуждаем (последняя из перечисленных функций вызывается функцией exit). Информация по этому вопросу сведена в табл. 1.4.

Большинство функций описаны далее в тексте книги, но здесь нужно сделать несколько замечаний. Во-первых, вызов fork из многопоточного процесса (multithreaded process) приводит к беспорядку в безымянных переменных синхронизации (взаимных исключениях, условных переменных, блокировках и семафорах, хранящихся в памяти). Раздел 6.1 книги [3] содержит необходимые детали. Мы просто отметим в добавление к таблице, что если эти переменные хранятся в памяти с общим доступом и создаются с атрибутом общего доступа для процессов, они будут доступны любому процессу, который может обращаться к этой области памяти. Во-вторых, три формы IPC System V не могут быть открыты или закрыты. Из листинга 6.6 и упражнений 11.1 и 14.1 видно, что все, что нужно знать, чтобы получить доступ к этим трем формам IPC, — это идентификатор. Поэтому они доступны всем процессам, которым известен этот идентификатор, хотя для семафоров и памяти с общим доступом требуется некая особая обработка.

Таблица 1.4. Действие fork, exec и _exit на IPC

Тип IPC fork exec _exit
Неименованные и именованные каналы Порожденный процесс получает копии всех дескрипторов родительского процесса Все открытые дескрипторы остаются открытыми, если для них не установлен бит FD_CLOEXEC Все открытые дескрипторы закрываются, данные из программного канала и FIFO удаляются после последнего закрытия
Очереди сообщений Posix Порожденный процесс получает копии всех открытых родительских процессов Все открытые дескрипторы очередей сообщений закрываются Все открытые дескрипторы очередей сообщений закрываются
Очереди сообщений System V Не действует Не действует
Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

9.1.2.1 Выгрузка при выполнении системной функции fork

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

9.1.2.1 Выгрузка при выполнении системной функции fork В описании системной функции fork (раздел 7.1) предполагалось, что процесс-родитель получил в свое распоряжение память, достаточную для создания контекста потомка. Если это условие не выполняется, ядро выгружает процесс из


9.2.1.1 Функция fork в системе с замещением страниц

Из книги Собираем компьютер своими руками автора Ватаманюк Александр Иванович

9.2.1.1 Функция fork в системе с замещением страниц Как уже говорилось в разделе 7.1, во время выполнения функции fork ядро создает копию каждой области родительского процесса и присоединяет ее к процессу-потомку. В системе с замещением страниц ядро по традиции создает


Save & Exit Setup

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Save & Exit Setup Данный пункт служит для сохранения изменений, выполненных в BIOS Setup. При его выборе BIOS запоминает настройки, сделанные в BIOS Setup, в CMOS-памяти с таким расчетом, чтобы они вступили в силу при следующей загрузке системы. Если выйти из BIOS, не воспользовавшись данным


Exit Without Saving

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

Exit Without Saving Выбрав данный пункт, можно отменить сделанные изменения. При этом в CMOS-память загрузится предыдущая рабочая конфигурация


Exit

Из книги Очень хороший самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере и увеличить его возможности автора Колисниченко Денис Николаевич

Exit В данной секции содержится несколько пунктов, позволяющих перед выходом из BIOS сохранить все измененные данные, отменить сделанные настройки или загрузить значения, принятые по умолчанию.• Exit & Save Changes. Служит для записи всех сделанных изменений. Нужно нажать


Exit

Из книги Защита от хакеров корпоративных сетей автора Автор неизвестен

Exit В данной секции содержится несколько пунктов, с помощью которых перед выходом из BIOS можно сохранить все измененные данные, отменить их или загрузить настройки по умолчанию.• Save & Exit Setup. Позволяет выйти из BIOS, записав сделанные изменения.• Exit Without Saving. Служит для


Генерирование SQL-команд с помощью типов построителя команд

Из книги Linux программирование в примерах автора Роббинс Арнольд

Генерирование SQL-команд с помощью типов построителя команд Вы должны согласиться с тем, что для работы с адаптерами данных может потребоваться ввод довольно большого объема программного кода, а также создание всех четырех объектов команд и соответствующей строки


5.1. Системные вызовы fork() и ехес()

Из книги Язык Си - руководство для начинающих автора Прата Стивен

5.1. Системные вызовы fork() и ехес() Процесс в Linux (как и в UNIX) — это программа, которая выполняется в отдельном виртуальном адресном пространстве. Когда пользователь регистрируется в системе, под него автоматически создается процесс, в котором выполняется оболочка (shell),


Меню Exit

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Меню Exit В меню Exit (рис. 3.7) вы найдете следующие команды:? Exit Saving Changes – выйти с сохранением изменений;? Exit Discarding Changes – выйти без сохранения изменений;? Load Setup Defaults – загрузить настройки по умолчанию;? Discard Changes – отменить изменения, но не выходить;? Save Changes – сохранить


Переадресация команд: применение переадресации команд для непосредственного выполнения скриптов и каналов

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Переадресация команд: применение переадресации команд для непосредственного выполнения скриптов и каналов Переадресация (перенаправление) команд – одна из наиболее полезных возможностей протокола SSH. Она вытекает из его основополагающих принципов построения, когда


9.1.1. Создание процесса: fork()

Из книги автора

9.1.1. Создание процесса: fork() Первым шагом в запуске новой программы является вызов fork():#include <sys/types.h> /* POSIX */#include <unistd.h>pid_t fork(void);Использование fork() просто. Перед вызовом один процесс, который мы называем родительским, является запущенным. Когда fork() возвращается, имеется


9.1.1.1. После fork() : общие и различные атрибуты

Из книги автора

9.1.1.1. После fork(): общие и различные атрибуты Порожденный процесс «наследует» идентичные копии большого числа атрибутов от родителя. Многие из этих атрибутов специализированы и здесь неуместны. Поэтому следующий список намеренно неполон. Существенны


10.9. Сигналы, передающиеся через fork() и exec()

Из книги автора

10.9. Сигналы, передающиеся через fork() и exec() Когда программа вызывает fork(), ситуация с сигналами в порожденном процессе почти идентична ситуации в родительском процессе. Установленные обработчики остаются на месте, заблокированные сигналы остаются заблокированными и т.д.


ВЫХОД: exit( )

Из книги автора

ВЫХОД: exit( )      Функция exit( ) даст вам удобный способ "покинуть" программу. Она часто используется для прекращения работы программы при появлении ошибки. Если к exit( ) обратились из функции, вызванной главной программой, то прекращает работу вся программа, а не только эта


4.7. Функции fork и exec

Из книги автора

4.7. Функции fork и exec Прежде чем рассматривать создание параллельного сервера (что мы сделаем в следующем разделе), необходимо описать функцию Unix fork. Эта функция является единственным способом создания нового процесса в Unix.#include <unistd.h>pid_t fork(void);Возвращает: 0 в дочернем