UNIX进程概念小结(apue)

来源:互联网 发布:linux socket 模型 编辑:程序博客网 时间:2024/06/06 19:49

1.进程组

一个进程是一个或多个进程的集合,通常由于相同的作业而联系在一起,能接收相同终端的信号量.

每个进程组可以拥有一个进程组领导,它的进程组ID和进程ID相同.

进程组生命周期----从进程组创建开始到最后一个进程离开该进程组.

一个进程可以设置自己的或者子进程的进程组ID,并且,它不能改变如果子进程调用一个exec函数后它将不能改变其进程组ID.

2.session

一个session是一个或多个进程组的集合.进程通过调用setsid函数建立新的session.

 #include <unistd.h>

pid_t setsid(void);

          返回值:正常返回进程组ID, 出错返回-1

如果一个进程不是进程组领导,那么setsid函数就可以创建一个新的session.同时会发生如下事件:

  1. 该进程成为了新创建的session的session领导.
  2. 该进程成为了新创建的进程组的进程组ID,新创建的进程组ID就是该进程ID.
  3. 该进程没有控制终端.如果某进程在调用setsid函数之前拥有控制终端,那么调用函数后后该关联将破坏.

3.控制终端

  1. 一个session可以拥有一个控制终端.
  2. 一个session领导可以建立与控制终端的联系,该进程被称为控制进程.
  3. 一个session中的进程组可以分为一个前台进程组和多个后台进程组.

4.孤儿进程组

POSIX.1定义一个孤儿进程组如下:

该进程组的成员进程的父进程要么是该进程组成员,要么是别的session的成员.也就是说只要一个进程组的成员的父进程在同一个session的另一个进程组中,那么该进程组就不是孤儿进程组.

因为进程组由于父进程终止而成为孤儿进程组,POSIX.1规定新产生的孤儿进程组的每一个停止的进程被发送SIGHUP信号后都会接着被发送SIGCONT信号.这就导致子进程当收到挂起信号后会继续执行.

 

原创粉丝点击