第三十五讲 进程组、会话、终端

第三十五讲 进程组、会话、终端

一、进程组

1、作用

对相同类型的进程进行管理

2、进程组的诞生

在 shell 直接执行应用程序,可以创建进程组。对于大部分进程来说,自己就是进程组的首进程。进程组只有一个进程

如果进程调用了 fork 函数,那么父子进程同属一个进程组,父进程位首进程

在 shell 中通过管道连接起来的应用程序,亮哥进程同属一个进程组,第一个进程位进程组的首进程

3、进程组id

进程组 id 称为 pgid,由首进程的 pid 决定,可以通过命令 ps -axjf 查看进程的 pgid

4、进程组分类

(1)、前台进程组

在 shell 启动时,它就被默认为前台进程组的首进程。前台进程组的首进程会占用会话所关联的终端来运行。当 shell 启动其他应用程序时,其他应用程序成为首进程。此时 shell 就不能占用会话所关联的终端来运行了。

(2)、后台进程组

后台进程组程序在运行的时候并不会占用终端

在 shell 终端运行程序时,可以加一个参数 & ,该程序就会后台运行,不会占用终端

使用 ctrl+z 也可以使程序后台运行

(3)、前后台进程切换

在 shell 终端使用 jobs 命令可以查看当前运行的后台进程组

使用 fg jobid 命令可以讲后台进程切换到前台

在 shell 终端运行程序时,可以加一个参数 & ,该程序就会后台运行,不会占用终端

使用 ctrl+z 也可以使程序后台运行

使用ctrl + c 可以终止后台进程

二、会话

1、作用

管理进程组

2、会话的诞生

调用setsid 函数可以新建一个会话,应用程序作为会话的第一个进程,作为会话的首进程

用户在终端登录之后,启动 shell 时,linux 系统会创建一个新的会话,shell 进程作为会话的首进程

3、会话id

会话 id 称为 sid,为会话首进程id

三、终端

1、物理终端

需要依赖物理设备的终端

  • 串口终端
  • lcd 终端

2、伪终端

虚拟出来的终端

  • ssh 远程连接
  • 桌面系统启动终端

3、虚拟终端

linux 内核自带的终端,可以使用 ctrl + F0 ~ F6 打开七个终端


版权声明:本文为qq_34355238原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。