10.8. Создание клонов
10.8. Создание клонов
Хотя fork() является традиционным способом создания новых процессов в Unix, Linux также предлагает системный вызов call(), позволяющий процессам дублироваться с указанием ресурсов, которые родительский процесс должен разделять со своими потомками.
int clone(int flags);
Это ненамного отличается от fork(). Единственная разница в наличии параметра flags. Он должен быть установлен равным сигналу, который посылается родительскому процессу, когда потомок завершает работу (обычно это SIGCHLD), объединенному логическим "или" с любым сочетанием перечисленных ниже флагов, определенных в <sched.h>.
CLONE_VM Два процесса разделяют пространство виртуальной памяти (включая стек). CLONE_FS Разделяется информация файловой системы (такая как текущий каталог). CLONE_FILES Разделяются открытые файлы. CLONE_SIGHAND Обработчики сигналов разделяются двумя процессами.Когда ресурсы разделяется двумя процессами, оба они видят эти ресурсы идентично. Если указан CLONE_SIGHAND, то когда один процесс заменяет обработчик определенного сигнала, оба начинают использовать новый обработчик (подробности об обработчиках сигналов представлены в главе 12). Когда используется CLONE_FILES, разделяются не только наборы открытых файлов, но также текущие позиции в каждом файле. Значения возврата для clone() те же самые, что и у fork().
Если для доставки родительскому процессу специфицирован сигнал, отличный от SIGCHLD, то семейство функций wait() по умолчанию не будет возвращать информацию об этих процессах. Если вы хотите получать информацию об этих процессах, как и в случае процессов, использующих нормальный механизм SIGCHLD, то флаг __WCLONE должен быть объединен с помощью логического "или" с параметром flags вызова wait(). Хотя такое поведение может показаться странным, оно обеспечивает большую гибкость. Если бы функция wait() возвращала информацию о клонированных процессах, было бы сложнее построить стандартные библиотеки потоков вокруг clone(), потому что wait() должна возвращать информацию о других потоках, а также о дочерних процессах.
Хотя и не рекомендуется, чтобы приложения непосредственно использовали clone(), доступно множество библиотек пространства пользователя, которые применяют clone() и предоставляют полностью POSIX-совместимую реализацию потоков. Библиотека glibc включает libthread — наиболее популярную реализацию потоков. Теме программирования потоков POSIX посвящено несколько хороших книг, среди которых [4] и [23].
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Создание
Создание Глупо нырять с десятиметровой вышки, даже не научившись плавать. Точно так же неразумно пытаться сделать что-либо, напоминающее хорошую презентацию, не изучив все возможности предлагаемого инструмента. Начнем с алфавита: для создания очередного набора слайдов
Создание
Создание Начнем с самой простой и очевидной задачи – создание личного сайта «с нуля». Для этого необходимо направить свой браузер по вполне очевидному (надеюсь, к последней главе книги подход Google к адресации стал более чем понятен!) адресу http://sites.google.com, не забыв привычным
Создание
Создание Прежде чем приступить непосредственно к формированию веб-страниц, необходимо подготовить содержимое будущего сайта (текст, изображения и пр.). Ведь согласитесь, было бы глупо создавать сайт ни о чем. Поэтому будем считать, что вся необходимая для наполнения
3.4. Создание группы
3.4. Создание группы Каждый пользователь принадлежит к одной или более группам. Группы используются для того, чтобы пользователи, принадлежащие одной группе, могли работать с общими файлами. Например, в группу user входят пользователи ivanov и petrov, а пользователь sidorov входит в
Создание методов
Создание методов Методы представляют собой обычные процедуры типов Sub и Function, которым выпало разместиться в модуле класса. Конечно, в большинстве случаев метод должен делать нечто, напрямую связанное с самим объектом, преобразуя данные, хранимые объектом. Но, при желании,
Создание триггеров
Создание триггеров Триггер определяется с помощью оператора CREATE TRIGGER, который состоит из заголовка и тела. Заголовок триггера отличается от заголовка хранимой процедуры, он содержит:* имя триггера, которое должно быть уникальным в базе данных;* имя таблицы,
ТЕМА НОМЕРА: Атака клонов
ТЕМА НОМЕРА: Атака клонов Автор: Владимир ГуриевНа третий день мы встретили в столовой пресс-центра Евгения Козловского. Евгений Антонович вид имел несколько взъерошенный, так как недавно узнал, что какой-то Евгений Козловский на выставке уже есть.Неприятное, наверное,
13-я КОМНАТА: Атака клонов
13-я КОМНАТА: Атака клонов Автор: Сергей ВильяновПопытки сделать свое хобби главным источником существования зачастую приводят к самым неприятным последствиям. Неприятным настолько, что многие попробовавшие разочаровываются в себе, в хобби и в жизни как таковой.Любители
6.6. Создание формул
6.6. Создание формул Формула является основным средством для анализа данных. С помощью формул можно складывать, умножать и сравнивать данные, а также объединять значения. Формулы подчиняются определенному синтаксису, в который входят знак равенства (=), вычисляемые
7.1. Создание презентации
7.1. Создание презентации Процесс создания презентации в Microsoft Power Point состоит из следующих этапов:• выбор общего оформления;• добавление новых слайдов и их содержимого;• выбор разметки слайдов;• изменение при необходимости оформления слайдов;• изменение цветовой
Есть ли будущее у клонов Digg и Reddit Алексей Лахов
Есть ли будущее у клонов Digg и Reddit Алексей Лахов Опубликовано 20 октября 2010 года Сайты социальных новостей снова у всех на слуху. Если раньше основной пищей для дискуссий были «войны» между пользователями самых популярных и посещаемых из них — Digg.com и
Есть ли будущее у клонов Digg и Reddit (продолжение) Алексей Лахов
Есть ли будущее у клонов Digg и Reddit (продолжение) Алексей Лахов Опубликовано 22 октября 2010 года Продолжение. Начало смотрите здесь. Максим N, руководитель проекта Pikabu - Расскажите краткую историю Pikabu. Откуда появилась идея сайта? -