调用系统调用fork()时使用哪些函数

时间:2018-08-17 01:51:56

标签: linux kernel fork

我一直在网上搜索以查找fork.c内部使用的功能以及顺序如何,但是我似乎找不到答案。我所看到的只是fork.c的作用。我知道fork.c使用_do_fork(),但是我不知道它是怎么到达的。

1 个答案:

答案 0 :(得分:0)

进行 fork()系统调用时,它会通过复制调用过程来创建一个新过程。新过程将称为过程。

查看此代码的基本概述。

fork()->sys_fork()->do_fork()

sys_fork()
{
 1. First it will validate the arguments.
 2. Invoke do_fork.
 3. return pid. (child pid)
}

do_fork()
{
1. First it will Allocate new address space.
2. Copy Segments of Caller address space to new address space.
3. allocate new task_struct instance. (PCB)
4. copy caller task_struct entries to new task_struct.
5. return.
}

成功后,子进程的PID将在父级中返回,而0将在子级中返回。

注意:他们的电话还有一些,但是这两个是最重要的,如果您想了解更多信息,请查看内核源代码。如果仍然需要帮助,请告诉我。