会话和进程组有一些其他特性:
- 一个会话可以有一个控制终端(controlling terminal)。这通常是登录到其上的终端设备(在终端登录情况下)或伪终端设备(在网络登录情况下)。
- 建立与控制终端连接的会话首进程被称为控制进程(controlling process)。
- 一个会话中的几个进程组可被分成一个前台进程组(foreground process group)以及一个或几个后台进程组(background process group)。
- 如果一个会话有一个控制终端,则它有一个前台进程组,会话中的其他进程组则为后台进程组。
- 无论何时键入终端的中断键(常常是DELETE或Ctrl+C),就会将中断信号发送给前台进程组的所有进程。
- 无论何时键入终端的退出键(常常是Ctrl+),就会将退出信号发送给前台进程组中的所有进程。
- 如果终端接口检测到调制解调器(或网络)已经断开连接,则将挂断信号发送给控制进程(会话首进程)。
这些特性示于图9-7中。
有时不管标准输入、标准输出是否被重定向,程序都要与控制终端交换。保证程序能读写控制终端的方法是打开文件/dev/tty,在内核中,此特殊文件是控制终端的同义语。自然,如果程序没有控制终端,则打开此设备将失败。
本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。