进程基本信息
程序被内存加载到空间 变成一个进程
进程的信息
- pid 自己的进程 ID
- ppid 父进程的 id
- pgid 进程组的 id
- uid 用户 id
- gid 组 id
- egid 有效用户 id
- euid 有效用户 id
进程的状态
- R 运行状态
- Z 僵尸状态
- S 睡眠状态
- T 停止状态
1 进程被创建后 子进程会复制 [父进程的代码段和数据段 ELF 文件]
并以创建后的下一行运行
2 如果使用了多进程 若父进程先结束
子进程会被 系统进程 1号进程托管变成 孤儿进程
3 父子进程是公用一块内存空间的 子进程若写数据 [写时复制]
写时会复制一块内存空间 给子进程修改
进程退出
- 运行到最后一个语句
- return 返回
- 运行遇到 exit 的时候
- 程序异常的时候
- 进程接受到中断信号
进程要么 正常结束 要么 异常结束 中断信号
退出都有 一个终止状态码
进程退出时 不会真的退出 还会驻留
父进程可以使用 wait pcnt_wait 函数
来获取进程的终止状态码 同时会释放 终止进程的内存空间
僵尸进程指 子进程已经结束 但是父进程还没使用 wait/wait_pid 回收
进程动态生成的目录
一个进程运行时 会生成 /proc/PID 这个目录文件
如果开发一个守护进程的wab项目 如果开启了大量线程没有回收 服务器的内存和存储空间 会被挤满
我们必须回收
linux 命令
- ps -exj ps -aux 查看进程的状态
- pstree -ap 查看进程树
- kill -s 19 命令 用来给一个进程发送中断信号