Процессы в Linux // Демо-занятие курса «Administrator Linux. Professional»

preview_player
Показать описание
На открытом уроке мы разберем, что такое процесс и программа, познакомимся с системными вызовами для создания процесса.

Преподаватель: Андрей Буранов - специалист по UNIX-системам в компании Mail.Ru Group

Следите за новостями проекта:
Рекомендации по теме
Комментарии
Автор

Андрей Буранов - классный специалист. Очень нравится смотреть его лекции

TestTest-fiok
Автор

Андрей как всегда со своим неповторимым микрофоном. Звук как из космического корабля на околоземной орбите. :)

itcloudguy
Автор

kill это и системный вызов и библиотечная функция и утилита, для отправки сигналов.

andreystarshinov
Автор

Ключевая ошибка: системные вызовы это пространство ядра. В пространстве пользователя новый процесс не создать. Системные вызовы это точки входа из пользовательского пространства в пространство ядра.
По поводу копирования процессов, при вызове fork: копируется не какой-то процесс, а конкретный процесс, который выполнил fork.
nohup просто перехватывает сигнал HUP, чтобы процесс его не получил, когда завершается лидер сеанса.

andreystarshinov
Автор

Если процесса с PID == 0 нету тогда что же это,

#include <unistd.h>

int main() {
// Создаем новый процесс с помощью функции fork()
pid_t pid = fork();

// Если процесс является дочерним, то заменяем текущую программу на программу systemd
if (pid == 0) {
execl("/usr/lib/systemd/systemd", "systemd", NULL);
}

// Если процесс является родительским, то ожидаем завершения дочернего процесса
waitpid(pid, NULL, 0);

return 0;
}

Из кого форканули systemd? из init, из initramfs, из ядра ? -- открываю викторину. Приз -- с интересом проведенное время) TL;DR

Morefierce