- 论坛徽章:
- 46
|
- 根据这个图会有多个task_struct指向struct pid,但是在fork的时候为什么每个进程对应一个pid呢
- long do_fork(unsigned long clone_flags,
- unsigned long stack_start,
- unsigned long stack_size,
- int __user *parent_tidptr,
- int __user *child_tidptr)
- {
- p = copy_process(clone_flags, stack_start, stack_size,
- child_tidptr, NULL, trace);[color=Red]/*倒数第二个参数就是struct pid*/[/color]
- }
- 在coyp_process 中会有关于struct pid的判断,进而在alloc_pid中去分配struct pid结构体,这样的话,不是每创建一个进程就要创建一个struct pid了吗?
- if (pid != &init_struct_pid) {
- retval = -ENOMEM;
- pid = alloc_pid(p->nsproxy->pid_ns);
- if (!pid)
- goto bad_fork_cleanup_io;
- }
复制代码 |
|