Update Post “2023-11-26-kernel-creation-of-new-process”

This commit is contained in:
Morgan 2023-11-26 07:55:55 +00:00
parent 709ca84b96
commit f8322dd5fe
1 changed files with 6 additions and 4 deletions

View File

@ -1,7 +1,7 @@
---
title: Kernel, creation of new process
title: Kernel, Process creation
date: 2023-11-26T07:44:51.449Z
slug: kernel-new-process-creation
slug: kernel-process-creation
description: "Deep dive Linux Kernel #3"
---
```c
@ -41,6 +41,8 @@ static int init(void * unused)
}
```
At `open("/dev/console") is opens fd 0, and with two `dup(0)`, fd 0, 1, 2 as stdin, stdout, stderr opens. When `execve()` or `fork()` happens, it simply copies calling process's `task_struct` as process context, so all file descriptors are also passed down.
In this `init/main.c`, after basic kernel initialization things, `open("/dev/console")` and two `dup(0)` opens three file descriptor 0, 1, 2 as stdin, stdout, stderr. Later when `execve()` or `fork()` happens, it simply copies calling process's `task_struct` as process context, so all file descriptors are also passed down as-is.
All processes' file descriptor 0, 1, 2 are all originates to `init`'s file descriptor, set up like above.
All processes' file descriptor 0, 1, 2 originates to `init`'s file descriptor.
If calling process opens PTY or TTY, which is common when we opens new terminal to run a process, it is also passed down to exec/forked process.