进程
含义正在执行的程序
PID:进程标识,每个进程都有唯一一个PID(非负整数)
专用PID:
0号进程:调度进程,所有进程的根进程
1号进程:init进程,初始化文件,永不终止
相关函数
#include <unistd.h>
pid_t getpid(void); //返回进程PID
pid_t getppid(void); //返回进程的父进程PID
创建子进程
#include <unistd.h>
pid_t fork(void);
功能:创建子进程
返回值:成功在父进程返回子进程PID,在创建的子进程中返回0,失败返回-1
⭐为父子进程设计不同的执行进程
例子:int main(void){
........
pid_t pid = fork();
if(pid = 0){
//子进程代码
return 0;
}
else
//父进程代码
return 0;
}
⭐子进程一旦创建,fork下面的代码,父进程会执行一遍,同时子进程也会执行一遍
父进程有子进程的话,直接再创建子进程,父子两个进程分别会创建一个对应的子进程
⭐父子进程关系:除代码区外其他区均属于子拷父的拷贝副本内存,代码区属于父子共享内容(文件描述符也会复制一份,父子进程均指向同一份文件表项,因此要避免文件读写位置的相互影响)
僵尸进程
父进程创建子进程,子进程先于父进程终止,子进程的终止状态还保留在内存中,没有被父进程回收,被称为僵尸进程
(父子孤尸:父进程先于子进程终止,子进程被一个专门的进程收养)