Чтение онлайн

на главную - закладки

Жанры

Параллельное и распределенное программирование на С++
Шрифт:

Восьми бит статуса выхода сыновнего процесса, доступность которых для ожидающего родительского процесса гарантирована стандартом IEEE Std 1003.1-2001, недостаточно для устранения неоднозначности ошибок порождения процесса, которые может возвратить образ любого процесса. Требуется, чтобы в значении stat_val никакие другие биты статуса выхода не были видимы, поэтому упомянутые выше макросы не поддаются строгой реализации на библиотечном уровне. Резервирование значения статуса выхода 127 для таких ошибок порождения процессов согласуется с использованием этого значения функциями system и popen при пропадании сигналов в этих операциях, которые возникают после завершения функции, но перед тем, как системная оболочка сможет их отработать. Статус выхода 127 уникальным образом не идентифицирует этот класс ошибок и не предоставляет никакой детальной информации о природе сбоя. Обратите внимание на то, что разрешается (и даже

поощряется) «ядерная» реализация функций posix_spawn и posix_spawnp с обеспечением возврата любых возможных ошибок в виде значений, возвращаемых этой функцией, тем самым предоставляя для родительского процесса более детальную информацию о происшедших сбоях.

Таким образом, для выделения асинхронных ошибок при выполнении функций posix_spawn или posix_spawnp упомянутые выше макросы не используются. О возможных ошибках, обнаруженных в контексте сыновнего процесса до того, как выполнится образ нового процесса, уведомление происходит путем установки статуса выхода сыновнего процесса равным значению 127. Вызывающий процесс для выявления сбоев при порождении процессов может использовать макросы WIFEXITED HWEXITSTATUS и значение stat_val, сохраненное функциями wait или waitpid, в тех случаях, когда другие значения статуса, с которыми может завершиться образ сыновнего процесса (до того, как родительский процесс сможет окончательно определить, что образ сыновнего процесса начал выполняться), отличаются от статуса выхода, равного числу 127.

Будущие направления

Отсутствуют.

Смотри также

alarm, chmod, close , dup, exec, exit , fcntl , fork, kill , open ,posix_spawn_file_actions_addclose, posix_spawn_file_actions_adddup2, posix_spawn_file_actions_addopen, posix_spawn_file_actions_destroy , <REFERENCE UNDEFINED> (posix_spawn_file_actions_init), posix_spawnattr_destroy, posix_spawnattr_init, posix_spawnattr_getsigdefault, posix_spawnattr_getflags, posix_spawnattr_getpgroup, posix_spawnattr_getschedparam, posix_spawnattr_getschedpolicy, posix_spawnattr_getsigmask , posix_spawnattr_setsigdefault , posix_spawnattr_setflags, posix_spawnattr_setpgroup, posix_spawnattr_setschedparam , posix_spawnattr_setschedpolicy , posix_spawnattr_setsigmask , sched__setparam , sched_setscheduler , setpgid , setuid , stat , times , wait , то м Base Definitions стан д арта IEEEStd 1003.1-2001, <spawn.h>.

Последовательность внесения изменений

Функции впервые реализованы в выпуске Issue 6, основанием послужил стандарт IEEEStdl003.1d-1999.

Применяется интерпретация IEEE PASC Interpretation 1003.1 #103, которая указывает, что в пункте 2 действия, соответствующие установкам сигналов по умолчанию, изменены так же, как маска сигналов.

При м еняется интерпретация IEEE PASC Interpretation 1003.1 #132.

posix_spawn_file_actions_addclose, posix_spawn_file_actions_addopen

Имя

posix_spawn_file_actions_addclose, posix_spawn_file_actions_addopen— функции внесения в объект действий над файла м и действия «закрыть файл» (или «открыть файл») (ADVANCED REALTIME).

Синопсис

SPN #include <spawn.h>

int posix__spawn_file_actions_addclose (

posix_spawn_file_actions_t *file_actions, int fildes); int posix_spawn_file_actions_addopen (

posix_spawn_file_actions_t *restrict file_actions, int fildes,

const char *restrict path, int oflag, mode_t mode) ;

Описание

Эти функции добавляют в объект действий над файла м и действие «закрыть файл» (или «открыть файл») или удаляют соответствую щ ее действие из это г о объекта.

Объект действий над файла м и и м еет тип posix_spawn_file_actions_t (который определен в за г оловке <spawn.h>) и используется для задания последовательности действий, подлежа щ их выполнению функция м и posix_spawn или posix_spawnp с целью получения для сыновне г о процесса м

ножества открытых файловых дескрипторов в соответствии с м ножество м открытых файловых дескрипторов родительско г о процесса. Стандарт IEEE Std 1003.1-2001 не определяет для типа posix_spawn_file_actions_t операторы сравнения или присваивания.

Объект действий над файлами, передаваемый функции posix_spawn или posix_spawnp , определяет, как множество открытых файловых дескрипторов вызывающего процесса должно быть трансформировано во множество потенциально открытых файловых дескрипторов для порождаемого процесса. Эта трансформация должна выглядеть так, как если бы однократно была выполнена заданнал последовательность действий в контексте порожденного процесса (до выполнения образа нового процесса), причем в порядке, в котором эти действия были добавлены в объект. Кроме того, при выполнении образа нового процесса любой файловый дескриптор (из этого нового множества), у которого установлен флаг FD_CLOEXEC, должен быть закрыт (см. описание функции posix_spawn ).

Функция posix_spawn_file_actions_addclose добавляет в объект, адресуемый параметром file_actions, действие по закрытию файлов close, в результате чего при порождении нового процесса с использованием объекта действий файловый дескриптор, заданный параметром fildes, будет закрыт (как если бы была вызвана функция close (fildes)).

Функция posix_spawn_file_actions_addopen добавляет в объект, адресуемый параметром file_actions, действие по открытию файлов орел, в результате чего при порождении ново г о процесса с использование м объекта действий файл, и м я которо г о зада н о пара м етро м path, будет открыт (как если бы была вызва н а функция open (path, oflag, mode) , и возвра щ енно м у ею файлово м у дескриптору, если он не равен значению fildes, будет присвоено значение fildes). Если дескриптор fildes относится к уже открыто м)' файлу, этот файл будет закрыт перед открытие м нового файла.

Строка, адресуе м ая пара м етро м path, копируется функцией posix_spawn_file_actions_addopen.

Возвращаемые значения

При успешном завершении эти функции возвращают нулевое значение; в противном случае — код ошибки, обозначающий ее характер.

Ошибки

Эти функции завершатся неудачно, если:

[EBADF] значение, заданное пара м етро м fildes, отрицательно либо больше или равно значению {OPEN_MAX}.

Выполнение этих функций м ожет завершиться неудачно, если: [EINVAL] значение, заданное пара м етро м file_actions, недопусти м о;

[ENOMEM] для расширения содержи м ого объекта действий над файлами недостаточно су щ ествую щ ей па м яти.

Не считается ошибкой, если в качестве значения аргу м ента fildes, передавае м ого эти м функция м, указа н файловый дескриптор, дл я которого задан н ал операция не м ожет быть выполнена во вре м я вызова. Любая подобнал ошибка будет обнаружена, когда соответствую щ ий объект действий над фай л а м и позже будет испо л ьзован при выпо л нении функции posix_spawn и л и posix_spawnp .

Поделиться:
Популярные книги

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

На Ларэде

Кронос Александр
3. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На Ларэде

Охота на попаданку. Бракованная жена

Герр Ольга
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Охота на попаданку. Бракованная жена

Кай из рода красных драконов

Бэд Кристиан
1. Красная кость
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кай из рода красных драконов

Хозяйка Проклятой Пустоши. Книга 2

Белецкая Наталья
2. Хозяйка Проклятой Пустоши
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Хозяйка Проклятой Пустоши. Книга 2

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Потусторонний. Книга 2

Погуляй Юрий Александрович
2. Господин Артемьев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Потусторонний. Книга 2

Чапаев и пустота

Пелевин Виктор Олегович
Проза:
современная проза
8.39
рейтинг книги
Чапаев и пустота

Солнечный корт

Сакавич Нора
4. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Солнечный корт

Лютая

Шёпот Светлана Богдановна
Любовные романы:
любовно-фантастические романы
6.40
рейтинг книги
Лютая

Ведьмак (большой сборник)

Сапковский Анджей
Ведьмак
Фантастика:
фэнтези
9.29
рейтинг книги
Ведьмак (большой сборник)

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4

Ученик

Губарев Алексей
1. Тай Фун
Фантастика:
фэнтези
5.00
рейтинг книги
Ученик

Начальник милиции. Книга 5

Дамиров Рафаэль
5. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 5