首页 > 系统服务 > 详细

进程组、会话、控制终端

时间:2020-06-10 12:38:29      阅读:36      评论:0      收藏:0      [点我收藏+]

进程组

进程组是一个或多个进程的集合,每个进程都属于一个进程组,进程组有唯一组ID。同一进程组中的各进程接收来自同一终端的各种信号。

<unistd.h>
pid_t getpgrp(void);//返回调用进程的进程组ID

每个进程组有一个组长进程,进程组ID即为组长进程ID。进程组组长可以创建一个进程组、创建组中的进程,然后终止。只要进程组有一个进程,进程组就存在。

//加入另一个进程组或创建一个新进程组
<unistd.h>
int setpgid(pid_t pid,pid_t pgid);//成功返回0,失败返回-1
//将pid进程的进程组设置为pgid
//pid=0表示使用调用者的进程ID
//pgid为0表示指定的进程ID作为进程组ID

一个进程只能设置自己和子进程的进程组ID。

 

会话

会话是一个或多个进程组的集合。一个会话开始于用户登录,终止于用户退出,在此期间,该用户运行的所有进程都属于这个会话周期。

//创建一个新的会话
<unistd.h>
pid_t setsid(void);//成功返回进程组ID,失败返回-1
//该进程称为新会话的会话首进程(创建该会话的进程),会话ID即为首进程的ID
//该进程成为一个新进程组的组长进程
//切断与控制终端的联系
//如果该进程已经是一个进程组的组长,则函数出错。
<unistd.h>
pid_t getsid(pid_t pid)//返回调用者会话首进程的进程组ID,即首进程ID,失败返回-1
//pid一般为0,表示调用进程的ID

 

控制终端

如果一个会话有一个控制终端,则它有一个前台进程组,其它进程组为后台进程组。建立与控制终端连接的会话首进程被称为控制进程。控制终端的输入和终端产生的信号会发给前台进程组。

进程组、会话、控制终端

原文:https://www.cnblogs.com/cs0915/p/13084000.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!