Книга: Разработка приложений в среде Linux. Второе издание
10.4.1. Создание дочерних процессов
10.4.1. Создание дочерних процессов
В Linux предусмотрены два системных вызова, которые создают новые процессы: fork()
и clone()
. Как упоминалось ранее, clone()
используется для создания потоков, и этот вызов будет кратко описан далее. А сейчас мы сосредоточимся на fork()
— наиболее популярном методе создания процессов.
#include <unistd.h>
pid_t fork(void);
Этот системный вызов имеет уникальное свойство возвращать управление не один раз, а дважды: один раз в родительском процессе и другой — в дочернем. Обратите внимание, что мы не говорим "первый — в родительском" — написание кода, который делает какие-то предположения относительно предопределенного порядка — очень плохая идея.
Каждый из двух возвратов системного вызова fork()
имеет разные значения. В родительский процесс этот системный вызов возвращает pid вновь созданного дочернего процесса, а в дочернем он возвращает 0.
Разница возвращаемых значений — это единственное отличие, видимое процессам. Оба имеют одинаковые образы памяти, права доступа, открытые файлы и обработчики сигналов[19]. Рассмотрим простой пример программы, порождающей дочерний процесс.
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
int main(void) {
pid_t child;
if (!(child = fork())) {
printf("в дочернемn");
exit (0);
}
printf("в родительском - дочерний: %dn", child);
return 0;
}
- 10.4.6. Уничтожение других процессов
- 10.4.4. Ускоренное создание процессов с помощью vfork()
- 10.4. Примитивы процессов
- 10.4.2. Наблюдение за уничтожением дочерних процессов
- Глава 7 Чего нужно опасаться при моделировании бизнес-процессов. Проектные риски моделирования бизнеспроцессов
- Создание файлов с блокировкой
- Создание свободно позиционируемых элементов
- Эффективное взаимодействие процессов архитектуры Classic Server
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Создание объектов Collection
- 7.4.2.4. Создание своего первого LiveCD
- 4.2. Создание трехмерной модели и построение горизонтальной проекции детали