Linux 多进程(一)

shell运行程序的过程:
用户键入命令->shell建立一个新进程来运行此程序->shell将程序从磁盘载入->程序在它的进程中运行直到结束

进程=程序+数据集合

进程是操作系统动态执行的基本单元,基本的分配单元

image

image

进程的状态和状态转换

进程的三个基本状态:就绪态,运行态,阻塞态

五种状态的模型:创建态,就绪态,运行态,阻塞态,终止态

image

image

image

Unix/Linux进程命令 ps命令: ps aux / ajx a:显示终端上的所有进程,包括其他用户的进程 u:显示进程的详细信息 x:显示没有控制终端的进程 j:列出与作业控制相关的信息

image

image

当前运行的命令也是一个进程

ps -ajx

image

PPID:父进程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杀死进程

image

kill命令

杀死进程

kill -l,显示所有的kill信号

kill [-signal] pid kill -l 列出所有信号 kill -SIGKILL 进程ID kill -9 进程ID killall name 根据进程名字杀死进程 让程序在后台运行

例如:

#./可执行程序名+& ./hello & PID,PPID,PGID和相关的函数

每个进程都由进程号来标识:

范围:0-32767(可以修改)

进程号对于一个进程来说是唯一的,但是可以在一个进程终止后,重用其进程号

类型:pid_t(整型)

image

image

fork #include <unistd.h> pid_t fork(void);

每次调用返回两次,父进程中返回的是子进程的PID,子进程中返回0

新进程拥有和父进程相同的代码和数据(运行到相同的地方)(从fork返回的地方开始)

(父子进程的代码完全相同)

如果返回-1,失败:

失败的普遍原因:
(1)当前系统进程数达到系统规定上限:errno被设置为EAGAIN

(2)系统内存不足:errno设置为ENOMEM

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzxgd.html