10.4.4. Ускоренное создание процессов с помощью vfork()
10.4.4. Ускоренное создание процессов с помощью vfork()
Обычно процессы, в которых вызывается fork(), немедленно вызывают exec() для другой программы (это то, что оболочка делает всякий раз, когда вы вводите команду), что делает полную семантику fork() более расточительной по вычислительным ресурсам, чем это необходимо.
Чтобы оптимизировать этот общий случай, существует vfork().
#include <unistd.h>
pid_t vfork(void);
Вместо создания совершенно новой среды выполнения для нового процесса vfork() создает новый процесс, который разделяет память с исходным процессом. Ожидается, что новый процесс запустит другой процесс посредством exit() или exec() очень быстро, но его поведение непредсказуемо, если он модифицирует память, возвратит управление из функции vfork(), содержащейся в нем, либо вызовет любую новую функцию. В дополнение к этому исходный процесс приостанавливается, до тех пор, пока новый либо не будет прерван, либо вызовет функцию exec()[24]. Однако не все системы обеспечивают семантику разделения памяти и приостановки родительского процесса vfork(), поэтому приложения не должны полагаться на такое поведение.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
4.6.2. Создание файлов с помощью creat()
4.6.2. Создание файлов с помощью creat() Системный вызов creat()[49] создает новые файлы. Он объявлен следующим образом:#include <sys/types.h> /* POSIX */#include <sys/stat.h>#include <fcntl.h>int creat(const char *pathname, mode_t mode);Аргумент mode представляет права доступа к новому файлу (как обсуждалось в предыдущем
10.4.1. Создание дочерних процессов
10.4.1. Создание дочерних процессов В Linux предусмотрены два системных вызова, которые создают новые процессы: fork() и clone(). Как упоминалось ранее, clone() используется для создания потоков, и этот вызов будет кратко описан далее. А сейчас мы сосредоточимся на fork() — наиболее
Создание NAT-преобразователя с помощью iptables
Создание NAT-преобразователя с помощью iptables Брандмауэры являются чрезвычайно полезными инструментами, но возможности iptables не ограничиваются созданием брандмауэров. В некоторых ситуациях большую помощь могут оказать NAT-преобразователи, которые также создаются
Ускоренное обновление данных
Ускоренное обновление данных Наибольший выигрыш в скорости при использовании Yaffil наблюдается при обновлении данных.Переработаны алгоритмы, связанные с управлением деревом "грязных страниц" буферного кэша, в результате чего устранено замедление при массивных
Создание таблиц с помощью запроса
Создание таблиц с помощью запроса Источником данных при создании новой таблицы являются уже существующие одна или несколько таблиц. Новая таблица может находиться в той же базе данных, где находится источник, или в любой другой.Для чего нужно создание таблиц с помощью
Начало и остановка процессов с помощью программных средств
Начало и остановка процессов с помощью программных средств В завершение этого раздела мы рассмотрим методы Start() и Kill() типа System.Diagnostics.Process. По именам этих методов вы можете догадаться, что они обеспечивают, соответственно, программный запуск и программное завершение
Создание подкаталогов с помощью DirectoryInfo
Создание подкаталогов с помощью DirectoryInfo Вы можете программно расширить структуру каталога, используя метод DirectoryInfo.CreateSubdirectory(). Этот метод с помощью одного обращения к функции позволяет создать как один подкаталог, так и множество вложенных подкаталогов. Для примера
4.4.2.2. Создание значенией геометрии с помощью функций WKB
4.4.2.2. Создание значенией геометрии с помощью функций WKB MySQL обеспечивает ряд функций, которые берут как входные параметры BLOB, содержащий представление Well-Known Binary и, факультативно, пространственный идентификатор системы ссылки (SRID). Они возвращают соответствующую
1.2. Создание и использование переключателей с помощью UISwitch
1.2. Создание и использование переключателей с помощью UISwitch Постановка задачи Вы хотите дать пользователям возможность включать и отключать определенные
1.25. Отображение протекания процессов с помощью UIProgressView
1.25. Отображение протекания процессов с помощью UIProgressView Постановка задачи Необходимо отображать на экране индикатор протекания процесса (Progress Bar), отражающий ход выполнения той или иной задачи, например индикатор загрузки файла, скачиваемого c определенного
3.2. Создание процессов
3.2. Создание процессов Существуют два способа создания процессов. Первый из них относительно прост, но применяется редко, поскольку неэффективен и связан со значительным риском для безопасности системы. Второй способ сложнее, но избавлен от недостатков
7.1. Создание DVD-Video с помощью Nero Vision
7.1. Создание DVD-Video с помощью Nero Vision Чтобы создать собственный диск формата DVD-Video, вам прежде всего необходимы исходные видеоматериалы. Вы можете взять их из разных источников – извлечь с других CD/DVD, загрузить из Интернета, захватить с видеокамеры, подключенной к разъему
4.14. Упражнение 14. Создание модели ТО-ВЕ (реинжиниринг бизнес-процессов)
4.14. Упражнение 14. Создание модели ТО-ВЕ (реинжиниринг бизнес-процессов) Модель ТО-ВЕ создается на основе анализа модели AS-IS. Анализ может проводиться как по формальным признакам (отсутствие выходов или управлений у работ, отсутствие обратных связей и т. д.), так и по
1. Создание модели процессов в BPwin
1. Создание модели процессов в BPwin 1.1. Инструментальная среда BPwin BPwin имеет достаточно простой и интуитивно понятный интерфейс пользователя, дающий возможность аналитику создавать сложные модели при минимальных усилиях. Ниже будет описан интерфейс версии 2.5. Рис. 1.1.
Создание архива с помощью WinRAR
Создание архива с помощью WinRAR Так как всем известно, что по любопытству мы (т. е. женщины) уступаем только кошкам, поэтому открываем программку и попробуем создать архив.Для примера создадим архив из двух папок, внутри которых находятся нужные нам файлы. Возьмем для