云南建设监理协会官方网站,daozicms企业建站系统,互联网舆情中心是干嘛的,计算机软件培训机构课程冯诺依曼体系结构 操作系统(Operator System) 进程控制块#xff08;PCB#xff09;
struct task_struct{//该进程的所有属性//该进程对应的代码和属性地址struct task_struct* next;
};
struct task_struct 内核结构体——创建内核结构体对象(task_struct#xff09;…冯诺依曼体系结构 操作系统(Operator System) 进程控制块PCB
struct task_struct{//该进程的所有属性//该进程对应的代码和属性地址struct task_struct* next;
};
struct task_struct 内核结构体——创建内核结构体对象(task_struct---将对象和数据关联起来。
进程内核数据结构task_struct 进程对应的磁盘代码 while(true){coutson:pid: getpid() parent: getppid()endl;sleep(1);}
son:pid: 6221 parent: 5912 son:pid: 6221 parent: 5912 son:pid: 6221 parent: 5912
son:pid: 6166parent: 5912 son:pid: 6166parent: 5912
多次运行父进程ppid不变。 命令行上启动的进程一般父进程没有特殊情况的话都是bash
./proc A proc, pid : 4018,ppid : 3997,id : 4019 A proc, pid : 4019,ppid : 4018,id : 0 fork
通过fork可以子进程。 pid_t idfork();printf(A proc, pid : %d,ppid : %d,id : %d\n,getpid(),getppid(),id);sleep(2);
pid_t idfork();//printf(A proc, pid : %d,ppid : %d,id : %d\n,getpid(),getppid(),id);if(id0){while(1){printf(Son proc, pid : %d,ppid : %d,id : %d\n,getpid(),getppid(),id);sleep(1);}}else if(id0){while(1){printf(Par proc, pid : %d,ppid : %d,id : %d\n,getpid(),getppid(),id);sleep(1);}}else{}
Par proc, pid : 6856,ppid : 5912,id : 6857 Son proc, pid : 6857,ppid : 6856,id : 0 Par proc, pid : 6856,ppid : 5912,id : 6857 Son proc, pid : 6857,ppid : 6856,id : 0 Par proc, pid : 6856,ppid : 5912,id : 6857 Son proc, pid : 6857,ppid : 6856,id : 0
总结
fork()之后会有父进程和子进程两个进程执行后续代码
fork后续的代码被父子进程共享
通过返回值不同让父子进程执行后续共享代码的一部分。