我一直在网上搜索以查找fork.c内部使用的功能以及顺序如何,但是我似乎找不到答案。我所看到的只是fork.c的作用。我知道fork.c使用_do_fork(),但是我不知道它是怎么到达的。
答案 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将在子级中返回。
注意:他们的电话还有一些,但是这两个是最重要的,如果您想了解更多信息,请查看内核源代码。如果仍然需要帮助,请告诉我。