unix/linux多进程编程3-进程控制

1:进程组


1.1与同意作业关联的一个或者多个进程的集合称为进程组,可以接收来自同一终端的各种信号。可以用getpgrp(),来或者进程的进程组ID。

1.2组长进程

每个进程组都有一个组长进程,其标志是进程ID等于进程组ID,组长进程可以创建一个进程组,创建该组中的进程,然后终止。但组长进程终止,并不意味着进程组的终止。

1.3生存周期

进程组创建到组中最后一个进程结束。

1.4创建或者加入进程组

#include <unistd.h>

setpgid(pid_t pid, pid_t pgid);

一个进程只能为它自己或者它的子进程设置进程组ID,并且在他的子进程调用了exec函数之后,它也不能再更改这个子进程的进程组ID。

1.5shell中fork之后,通常在父进程中设置子进程的进程组ID,而在子进程中也设置自己的进程组ID,原因是避免因为父子进程的执行先后不确定,而导致一段时间内子进程的组成员身份不确定。

 

2:会话


1:一个或者多个进程组的集合,称为会话。

2:创建会话

#include <unistd.h>

pid_t setsid(void);

 

3:控制终端


1)一个会话只有一个控制终端(controlling terminal)

2)建立与控制连接连接的会话首进程称为控制进程(conrolling process)

3)一个会话(有控制终端的会话)包括一个前台进程组和一个或者多个后台进程组

4)无论何时键入终端中断键(Ctrl+C / Del),都会将中断信号发送前台进程组的所有进程 

5)无论何时键入终端退出键(Ctrl+\),都会将退出信号发送给前台进程组的所有进程 

6)如果终端接口检测到调制解调器(或网络)断开了连接,则将挂断信号发送给控制进程(会话首进程)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值