1. 进程管理续
1.1 进程描述符及任务结构:
1.1.1.进程家族树:
所以进程都是PID为的init进程的后代
获得父进程:struct task_struct *my_parent=currnet->parent;
依次访问子进程:list_for_each(list,$current->children){
task=list_entry(list,struct task_struct,sibling);}
获取链表下一个或上一个进程:list_entry(task->task.next,struct task_struct,tasks)
list_entry(task->task.prev,struct task_struct,tasks)
遍历进程:struct task_struct *task
for_each_process(task){
printf(“%s:[%d]/n”,task->comm,task->pid);//打印每个进程的名称和PID
1.2 进程创建:
Fork()负责拷贝。Exec()负责读取可执行文件。
1.2.1.写时拷贝
Fork()只有在需要写入时才进行资源的复制,在此之前子进程只读共享父进程资源。
1.2.2.Fork()