UNIX环境高级编程:进程关系与登录详解

需积分: 0 2 下载量 160 浏览量 更新于2024-08-02 收藏 561KB PDF 举报
"UNIX环境高级编程共32章" 在深入探讨UNIX环境高级编程的第9章之前,让我们先回顾一下前文提及的一些基础概念。进程是操作系统中的基本执行单元,每个进程都有一个父进程,而父进程可以等待并获取子进程的退出状态。此外,进程还可以组织成进程组,使得在某些操作中可以方便地处理一组相关的进程。信号是UNIX系统中进程间通信的重要机制,用于通知进程发生了特定事件。 第9章主要讨论的是进程之间的关系,特别是与POSIX.1标准引入的对话期(Session)概念。对话期是一种组织进程的方式,它包括一个会话领导进程和一组与之关联的进程,通常用于管理登录会话和控制终端。登录shell和从登录shell启动的进程构成了一个会话的一部分,这些进程的生命周期、交互方式和控制都与会话紧密相关。 在早期的UNIX系统中,如V7,用户通过本地或远程终端登录,登录过程通常涉及到终端设备驱动程序。当系统启动时,init进程(进程ID为1)被创建,并进入多用户模式。init会读取/etc/ttys文件,根据文件内容为每个可登录的终端设备创建一个新的子进程来执行getty程序。getty程序负责处理与用户的交互,如设置终端类型、波特率等,并准备接收用户的登录信息。 在图9-1所示的过程中,init及其生成的getty子进程都以root权限运行,拥有超级用户特权。getty打开终端设备,准备接收用户的登录输入。如果终端连接的是调制解调器,open函数可能会等待调制解调器的响应,如用户的拨号。 在这一章中,还会详细介绍如何处理终端登录过程中的信号,比如SIGHUP(挂断信号),当调制解调器挂断或者终端会话结束时,这个信号会被发送给会话领导进程。同时,还会涉及如何通过控制终端来管理和控制会话中的进程,包括进程组的领导权转移和终端的分离等。 了解这些内容对于开发涉及多进程交互、终端控制或登录脚本的UNIX应用程序至关重要。第10章关于信号的讨论也是理解进程间通信和系统响应行为的关键,如果你对UNIX信号不熟悉,建议先预览一下该章节的内容,以确保对第9章的深入理解。