Процессы в Linux // Демо-занятие курса «Administrator Linux. Professional»
HTML-код
- Опубликовано: 26 сен 2024
- На открытом уроке мы разберем, что такое процесс и программа, познакомимся с системными вызовами для создания процесса.
«Administrator Linux. Professional» - otus.pw/sl63/
Преподаватель: Андрей Буранов - специалист по UNIX-системам в компании Mail.Ru Group
Пройдите опрос по итогам мероприятия - otus.pw/quz7/
Следите за новостями проекта:
- Telegram: t.me/Otusjava
- ВКонтакте: otus.pw/850t
- LinkedIn: otus.pw/yQwQ/
- Хабр: otus.pw/S0nM/
Андрей Буранов - классный специалист. Очень нравится смотреть его лекции
Андрей как всегда со своим неповторимым микрофоном. Звук как из космического корабля на околоземной орбите. :)
Ключевая ошибка: системные вызовы это пространство ядра. В пространстве пользователя новый процесс не создать. Системные вызовы это точки входа из пользовательского пространства в пространство ядра.
По поводу копирования процессов, при вызове fork: копируется не какой-то процесс, а конкретный процесс, который выполнил fork.
nohup просто перехватывает сигнал HUP, чтобы процесс его не получил, когда завершается лидер сеанса.
kill это и системный вызов и библиотечная функция и утилита, для отправки сигналов.
Если процесса с PID == 0 нету тогда что же это ,
#include
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