shell运行程序的过程:
用户键入命令->shell建立一个新进程来运行此程序->shell将程序从磁盘载入->程序在它的进程中运行直到结束
进程=程序+数据集合
进程是操作系统动态执行的基本单元,基本的分配单元
进程的三个基本状态:就绪态,运行态,阻塞态
五种状态的模型:创建态,就绪态,运行态,阻塞态,终止态
当前运行的命令也是一个进程
ps -ajxPPID:父进程ID
PID:进程ID
PGID:进程组的ID(一个组中可以有多个进程)
SID:会话ID:一个会话包含一个或多个组
会话是由会话中的第一个进程创建的,一般是打开终端时创建的shell进程(领头进程),会话中领头进程的PID即为会话的SID
STAT参数意义: D 不可中断Uninterruptible (usually Io) R 正在运行,或在队列中的进程 s(大写) I处于休眠状态 T 停止或被追踪 Z 僵尸进程 w 进入内存交换(从内核2.6开始无效) x 死掉的进程 < 高优先级 N 低优先级 s 包含子进程 + 位于前台的进程组 top命令实时显示进程的动态
-d参数指定信息更新的时间间隔
top 可以在使用top命令时加上 -d 来指定显示信息更新的时间间隔,在top命令执行后.可以按以下按键对显示的结果进行排序: M 根据内存使用量排序 P 根据cPU占有率排序 T 根据进程运行时间长短排序 u 根据用户名来筛选进程 K 输入指定的 PID杀死进程杀死进程
kill -l,显示所有的kill信号
kill [-signal] pid kill -l 列出所有信号 kill -SIGKILL 进程ID kill -9 进程ID killall name 根据进程名字杀死进程 让程序在后台运行例如:
#./可执行程序名+& ./hello & PID,PPID,PGID和相关的函数每个进程都由进程号来标识:
范围:0-32767(可以修改)
进程号对于一个进程来说是唯一的,但是可以在一个进程终止后,重用其进程号
类型:pid_t(整型)
每次调用返回两次,父进程中返回的是子进程的PID,子进程中返回0
新进程拥有和父进程相同的代码和数据(运行到相同的地方)(从fork返回的地方开始)
(父子进程的代码完全相同)
如果返回-1,失败:
失败的普遍原因:
(1)当前系统进程数达到系统规定上限:errno被设置为EAGAIN
(2)系统内存不足:errno设置为ENOMEM