文章目录
前言
关于UNIX环境高级编程和UNIX网络编程的学习记录和总结
一、进程的描述
进程是运行起来的程序,会占用内存、cpu等系统资源,而程序只会占用磁盘资源。每个进程都有唯一的进程id(如同每个人的身份证号),可使用ps aux
查看进程id
进程的状态有:就绪态、运行态、阻塞态、终止态。(初始态在准备资源后进入就绪态)
每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息:
pcb进程控制块是位于内核空间的用于描述进程特征信息的task_struct结构体(linux中)。
PCB进程控制块主要包含:进程id、文件描述符表、进程状态寄存器信息(也存放MMU的映射表)\进程工作目录位置、*umask掩码 、信号相关信息资源、用户id和组id。
二、进程创建之fork与vfork
pid_t fork(void); //创建进程
pid_t getpid() //获取当前进程id
pid_t getppid() //获取当前进程的父进程id
由fork创建的新进程被称为子进程( child process)。该函数被调用一次,但返回两次。
pid_t pid =fork();
if(pid==-1){
//fork error
exit(1);
}
else if(pid==0){
//子进程的返回值是 0
}
else if(pid>0