Какой системный вызов создает родительский процесс?

Какой системный вызов создает родительский процесс?

Насколько я понимаю, это forkсистемный вызов, который создает новый процесс путем клонирования родительского процесса. Чем создается родительский процесс? Если используется библиотека C для создания нескольких процессов, какой системный вызов был для создания первого процесса? Например, при запуске./main.o

решение1

Само ядро ​​содержит внутренний вызов для execve()создания процесса 1 (init), который никогда не завершается.

Init() — корень всего дерева процессов. Он начинается с разветвления процессов для всех известных служб и других настроенных задач, а также для всех устройств входа.

решение2

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

Оболочка вызывает fork()создание нового дочернего процесса, а затем в этом новом процессе вызывает один из процессов exec()семейства, чтобы начать выполнение вашей программы.

Если ваша программа запускается каким-либо другим (не оболочкой) процессом, последовательность будет такой же.

Очевидно, что это должно где-то начаться: конечным предком всех процессов является процесс init(PID 0), который магическим образом запускается ядром для запуска пользовательского пространства.

Связанный контент