1.进程的概念:简单来说,就是正在执行的程序。从内核的角度看,分配系统资源的实体。2.PCB说到进程肯定要提PCB,PCB是一种数据结构(也是C语言中的结构体),负责存储进程信息,每个进程都有自己的PCB,在fork子进程时,子进程在创建自己的PCB时,会从父进程的PCB中继承一部分信息,PCB也是对进程控制的唯一且最有效的方法。3.PCB中的内容分类 1)标识符 :描述进程的唯一标识符,用来区别进程。如进程id
1 #include
2 #include
3 #include
4
5
6 int main(){
7 printf("pid:%d",getpid()); //获取当前进程id
8 printf("ppid:%d",getpppid()); //获取父进程id
9 return 0;
10 }
2)状态:进程状态,退出码... 进程状态有如下几种:R 就绪/执行;S 挂起;D 深度睡眠;T 暂停;t 跟踪;X 进程退出;Z 僵尸进程
僵尸进程出现的原因:父进程未读取子进程的退出状态。
#include
#include
int main(){
pid_t pid=fork();
if(pid>0){ //父进程
printf(" This is father%d
",getpid());
sleep(35);
}else{ //子进程
printf("This is child %d
",getpid());
sleep(3);
exit(EXIT_SUCCESS);
}
return 0;
}
3)优先级:进程调度的先后顺序,pri越大,优先级越低 调整优先级的命令:nice renice 或者top ->r->pid->nice值
4)程序计数器:程序中即将被执行的下一条指令的地址。
5)内存指针:程序代码和相关数据的指针...
6)上下文:CPU各种寄存器在内存中保存的一份副本
7)记账信息:一个进程在CPU上的执行信息。
8)文件描述符表
9)信号相关结构:信号屏蔽字,未决信号集,捕捉信号的函数指针数组.. 10)...
4.环境变量
类似于全局变量创建环境变量: export 变量名查看环境变量:echo $变量名介绍两个环境变量 1)_PATH_:值为一组目录,在Shell下输入命令在目录中查找对应的可执行程度
2)_LD_LIBRARY_PATH:值也是一组目录,当执行可执行环境变量对应的目录中查找动态链接库。
查看所有环境变量 env通过函数设置环境变量
设置环境变量 putenv
(“name=value”) 函数 取值 getenv
(“环境变量名”)
删除环境变量: unset 变量名5.虚拟地址空间