前台进程,会话,控制终端,用户的关系

前台进程,会话,控制终端,用户的关系
1、 一个会话和一个控制终端一一对应
2、 一个控制终端对应一个前台进程组
3、一个会话拥有一个前台进程组和若干后台进程组
4、 会话中的所有进程都对应同一个控制终端
5、 只有前台进程可以read write控制终端
6、 控制终端收到一些特殊的信号字符,会发送相应的信号给前台进程组的进程
7、 控制终端退出或者控制进程的退出,会发送sighup信号给前台进程组
8、
会话中的每个进程组称为一个作业(job)
9、会话的意义在于将多个工作囊括在一个终端,并取其中的一个工作作为前台,来直接接收该终端的输入输出以及终端信号。其他工作在后台运行。
10、 作业与进程组的区别:如果作业中的某个进程又创建了子进程,则子进程不属于作业。一旦作业运行结束,Shell就把自己提到前台,如果原来的前台进程还存在(如果这个子进程还没终止),它自动变为后台进程组。
11、会话首进程又叫控制进程、图中的SID就是指的控制进程的PID
12、
同一会话中的进程通过该会话的领头进程和一个终端相连,该终端作为这个会话的控制终端。一个会话只能有一个控制终端,而一个控制终端只能控制一个会话。用户通过控制终端,可以向该控制终端所控制的会话中的进程发送键盘信号。
完整场景: 用户通过终端登录时,login shell 成为会话leader和控制进程,该终端被设置成为控制终端;login shell是该会话的唯一进程,在该终端中执行命令,会将命令中的进程放入一个新的进程组(前台or后台)执行;当终端关闭时,内核发送SIGHUP给控制进程,即login shell, login shell发送SIGHUP给由login shell创建的所有进程组,如果login shell控制进程退出,则kernel发送sighup给前台进程组中的所有进程(支持作业的情况下,也会发给后台进程组中的所有进程),SIGHUP的默认动作是终止进程,所以login shell和相应的子进程都终止,控制终端和会话的映射关系解除。




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值