UNIX: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 267:
=== Размножение процессов ===
 
Процессы могут порождать новые процессы. Порождённый процесс называется ''child process'', а процесс, породивший его - ''parental process''. Самым первым прицессомпроцессом является '''init''', его функция — породить остальные процессы, а сам он не имеет родительского процесса. Все остальные процессы являются потомками '''init'''. Если пользователь запускает программу, соответствующий процесс порождается '''командной оболочкой''' — процессом, основная функция которого — вводить команды с терминала и выполнять их. PID родителя называется PPID и возвращается системным вызовом '''getppid'''.
 
Для порождения новых процессов используются системные вызовы '''fork''' и '''vfork'''. Системный вызов '''fork''' раздваивает текущий процесс, создаёт его клон. Вновь созданный процесс не отличается от старого ничем, кроме PID и PPID. Системный вызов '''execve''' запускает исполняемый файл (параметрами его являются исполняемый файл, аргументы и переменные окружения). Вновь запущенный исполняемый файл заменяет собой текущий процесс. Таким образом, '''fork''' сохраняет исполняемый файл, но меняет PID и PPID, а '''execve''' - наоборот.