定义: 简单说来,进程就是程序的一次执行过程。
进程至少有三种基本状态。这三种基本状态是:运行态、就绪态和封锁态(或等待态),进程的状态可依据一定的条件和原因而变化
其中:可中断等待进程可以被信号中断;不可中断等待进程直接在硬件条件等待,并且任何情况下都不可中断。
-
进程的模式: 在 Linux 系统中,进程的执行模式划分未 用户模式 和 内核模式
-
进程的类型: 按照进程的功能和运行的程序来分,进程划分为两大类:一类是 系统进程,另一类是 用户进程
-
进程号(PID)
-
函数:
extern pid_t getpid(void);
-
-
父进程号(PPID)
-
函数:
extern pid_t getppid(void);
-
-
进程查看方式
-
ps aux
——进程信息查看,但不是动态显示 -
ps auxf
——以树状方式查看进程 -
top
——实时查看进程状态 -
输出项解释:
-
USER:进程的属主
-
PID:进程的 ID 号
-
PPID:父进程的 ID 号
-
%CPU:进程占用的 CPU 百分比
-
%MEM:占用内存的百分比
-
NI:进程的 NICE 值,数值大,表示较少占用 CPU 时间,负值优先级最大
-
VSZ:进程虚拟大小
-
RSS:驻留中页的数量
-
WCHAN:正在等待的进程资源
-
TTY:终端 ID
-
STAT:进程状态
-
START:启动进程的时间
-
TIME:进程消耗 CPU 的时间
-
COMMAND:命令的名称和参数
-
-
-
会话与进程组的特点
-
一个会话可以由一个控制终端,建立于控制终端连接的会话首进程被称为控制进程
-
一个会话中的几个进程组可分为一个前台进程组合几个后台进程组,如果会话有一个控制终端,则有一个前台进程组
-
无论何时在控制终端键入或监测,将会有信号发送给前台进场组的所有进程
-
进程组号注意事项:
-
进程组号等于创建进程号,当创建进程退出,只要该进场组存在一个进程,该进程组就存在
-
设置进程组号,前后参数相等,即当前进程转换为进程组长
-
-
-
进程组号(PPID)
-
获取进程组号函数:
extern pid_t getpgid(pid_t pid);
-
设置进程组号函数:
int setpgid(pid_t pid, pid_t pgid);
-
-
会话
-
描述:一个或多个进程组的集合
-
函数:
extern pid_t getsid(pid_t pid); extern pid_t setsid(void)
-
-
控制终端
-
函数:
pid_t tcgetpgrp(int filedes); pid_t tcgetpgrp(int filedes, pid_t pgrpid); pid_t tcgetsid(int filedes);
-
-
真实用户号(RUID)
-
作用:创建该进程的用户 UID
-
函数:
extern uid_t getuid(void);
-
-
有效用户号(EUID)
-
作用:有效 UID 一般与 UID 相同,但是在设置 setuid 位后则不同
-
函数:
extern uid_t geteuid(void);
-
-
进程用户组号(GID)
-
作用:创建该进程的用户所在的组号 GID
-
函数:
extern uid_t getgid(void);
-
-
有效进程用户组号(EGID)
-
作用:有效 GID 一般与 GID 相同,但是在设置 setgid 位后则不同
-
函数:
extern uid_t getegid(void);
-