Проверяет понимание базового механизма создания процессов в Unix-подобных системах через системный вызов fork().
Системный вызов fork() — это фундаментальный механизм в Unix-подобных операционных системах (Linux, macOS) для создания нового процесса. Он порождает дочерний процесс, который является почти точной копией родительского: у него своя копия адресного пространства, переменных, открытых файловых дескрипторов и состояния процессора. После вызова оба процесса выполняют следующую инструкцию, но с разными возвращаемыми значениями.
Когда вызывается fork(), ядро создает новый процесс, копируя структуры данных родителя. Возвращаемое значение — ключ к пониманию: в родительском процессе fork() возвращает PID (идентификатор) дочернего процесса, а в дочернем — 0. Если произошла ошибка, возвращается -1. Это позволяет программе разделить логику на две ветки.
#include <unistd.h>
#include <stdio.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
printf("Дочерний процесс, PID=%d\n", getpid());
} else if (pid > 0) {
printf("Родительский процесс, PID=%d, дочерний PID=%d\n", getpid(), pid);
} else {
perror("fork failed");
}
return 0;
}В этом примере после fork() оба процесса печатают свои сообщения. Порядок вывода не гарантирован, так как планировщик решает, кто выполнится первым.
fork() используется для параллельного выполнения задач, например, в веб-серверах (как Apache) для обработки запросов, в командных оболочках для запуска внешних команд, а также в системных демонах. Часто fork() комбинируют с exec(), чтобы заменить образ процесса новой программой.
Понимание fork() необходимо для работы с многопроцессными приложениями в Unix. Это базовый инструмент для создания изоляции и параллелизма, хотя в современных языках высокого уровня часто используются потоки или асинхронность. Однако знание fork() помогает глубже понять, как операционная система управляет процессами.
Уровень
Рейтинг:
4
Сложность:
3
Навыки
Networks
Linux
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию