Unix环境高级编程学习笔记 第9章 进程关系
来源:互联网 发布:海南广电网络 编辑:程序博客网 时间:2024/06/04 18:46
这章的主要概念:
1.进程组
2.会话
3.控制终端
4.孤儿进程组
前三者之间的关系: 一次登录终端即形成一个会话,一个会话可以有多个进程组,一个会话可以有一个控制终端,只有一个前台进程组(拥有控制终端的进程组)可以有多个后台进程组。
要注意的:如果后台作业要读终端,则终端驱动程序会产生SIGTTIN信号并停止该后台作业.在用户禁止后台作业写到控制终端时,如果后台进程试图写到终端,则驱动程序会向该作业发送SIGTTOU信号,停止后台作业. 要注意这两个信号产生的条件及特点,在后面实现守护进程时需用到。
对书上图9-8的解释:
由shell进程fork出的子进程本来具有和shell相同的session,进程组和控制终端.但是shell调用setpgid函数将作业中的某个子进程指定为一个新进程的leader,然后调用setpgid将作业中的其它子进程也转移到这个进程组中,如果这个进程组需要在前台运行,就调用tcsetpgrp函数将它设置为前台进程组,由于一个session只能有一个前台进程组,所以shell所在的进程组就自动变成后台进程组.
这个可以通过9.9节中的例子验证.
程序9-1的解释: 父子进程都属于同一个进程组并且是前台进程组,此时shell是后台作业.当子进程sleep后,父进程终止.即该进程组的组长进程终止,shell并不知道该进程组还有一个进程(此进程并不是shell的子进程).认为其作业结束,shell把自己提至前台,此时该子进程的进程组成为后台进程组.当该子进程试图读终端时,则驱动程序会产生SIGTTIN信号.
一个进程组不是孤儿进程组的条件是:该组中有一个进程,其父进程在属于同一会话的另一个组中.这有点不好理解,可以结合9-1的例子去理解.9-1中的进程组中只有一个子进程了,其父进程是init,init并不在该子进程的同一个会话中.所以该进程组为孤儿进程组.
- Unix环境高级编程学习笔记 第9章 进程关系
- UNIX环境高级编程(第9章 进程关系)
- UNIX环境高级编程-第9章- 进程关系
- UNIX环境高级编程之第9章:进程关系
- 《UNIX环境高级编程》第9章 进程关系
- 《UNIX环境高级编程》--9进程关系
- UNIX环境高级编程学习之第九章进程关系-创建孤儿进程
- Unix环境高级编程学习笔记(四) 进程环境
- 《UNIX环境高级编程》学习笔记一之进程环境
- 《UNIX环境高级编程》学习笔记——进程环境
- UNIX环境高级编程学习笔记(八)进程环境
- Unix环境高级编程—进程关系
- unix环境高级编程-进程关系
- 进程环境 - UNIX环境高级编程-第7章
- UNIX环境高级编程(第7章 进程环境)
- UNIX环境高级编程-第7章- 进程环境
- UNIX环境高级编程之第7章:进程环境
- 《UNIX环境高级编程》第7章 进程环境
- MAKELONG, MAKELPARAM, MAKEWPARAM,MAKELRESULT
- Windows Phone 7之HelloWorld!
- 微软100题面试题总结
- WPF中绘画和动画
- UVA 152 - Tree's a Crowd
- Unix环境高级编程学习笔记 第9章 进程关系
- 编程之美总结
- StageFright框架流程解读
- Vi编辑器的基本使用方法
- pq 合并分区后,merged_partition_content 文件夹无法删除,怎么办
- 找工作准备的面试题
- 西语1
- WPF中绘画和动画(2)
- PHP导入导出Excel方法