第九章 进程关系
进程组
每个进程组都有一个组长进程。组长进程的标识是,其进程ID等于进程组ID
组长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组中有一个进程存在,则该进程组就存在,这与其组长进程是否终止无关。从进程组创建开始到其中最后一个进程离开为止的时间成为一个进程组的生存期。进程中的最后一个进程可以终止,或者转移到另外一个进程组。
pid_t getgpid()或者进程所在的进程组ID
进程可以通过int setpgid(pid_t pid, pid_tpgid)来加入一个现有的组或者创建一个新进程组
setpgid 函数将pid进程的进程组ID设置为pgid ,如果这两个参数相等,则由pid制定的进程变成进程组的组长,如果pid 等于0 则使用调用者的进程ID,另外,如果pgid是0,则由pid指定的进程将用作进程组ID。
一个进程只能为它自己或者他的子进程设置进程组,
会话
会话是一个或者多个进程组的集合。
进程通过调用pid_t setsid()建立一个新会话。
如果调用次函数的进程不是一个进程组的组长,则此函数就会创建一个新会话,结果发生3件事
1进程变成新会话首进程,此时该进程为新会话中的唯一进程
2该进程成为一个新进程的组长进程。新进程组ID是调用进程的进程ID
3该进程没有控制终端,如果调用setsid之前该进程有一个控制终端,那么这种联系也会被中断。
如果该调用进程已经是一个进程组的组长,则此函数返回错误。
pid_t getsid(pid_t pid)
如果pid是0的话,getsid返回调用进程的会话首进程的进程组ID
控制终端
会话和进程组有的一些其他特性。
1一个会话可以有一个控制终端。这通常是登陆到其上的终端设备或者伪终端设备。
2建立与控制终端连接的会话首进程被称为控制进程。
3一个会话中的几个进程可以分成一个前台进程组,以及一个或者几个后台进程组
4如果一个会话有一个控制终端,那么他就有一个前台进程组,会话中的其他进程则为后他进程组。
5无论何时键入终端的中断键,就会将中断信号发送给前台进程的所有进程。
6无论何时键入终端的退出键,就会将退出信号发送给前台进程组中的所有进程。
分享到:
相关推荐
本篇文章是对APUE 进程环境详解进行了详细的分析介绍,需要的朋友参考下
UNIX环境高级编程第三版源码,Linux编程经典。。。。。。
apue
apue部分习题答案,有需要的同学自行下载
APUE总结信号线程进程,描述描述描述描述描述描述
通过实用案例讲解apue的使用,涉及文件操作,socket操作,信号,进程间通讯
apue代码包
Apue unix高级编程的源码
APUE3+代码+APUE2(中文).经典中的经典。我就不做过多介绍了
本书[APUE中文UNIXpdf完整版]全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进 程控制、进程间通信以及...
apue的中文版,内容清晰,LINUX编程不可不看的好书!
相信很多初学《UNIX环境高级编程》的朋友都会遇到一个问题,运行里面的实例时就出现问题,提示 "错误:apue.h:没有那个文件或目录". apue.h是作者自定义的一个头文件,包括程序所需的常用头文件及出错处理函数。...
UNIX环境高级编程(APUE)V3 UNIX环境高级编程(APUE)V3 UNIX环境高级编程(APUE)V3
APUE-Edition2-英文版 有检索目录 图灵经典书籍 APUE-Edition2-英文版 有检索目录 图灵经典书籍
APUE的源码,绝对经典。
Unix环境高级编程(APUE)中的头文件apue.h
UNIX网络编程 APUE.CHM 经典的文件
apue第三版, 资源分数好像最低只能设为1,
非常适合学习ARM开发的人员,能够精确的学习快速提高apue知识