Linux下的进程本身都是以init为祖先进程的一个树状进程族谱,Init进程就是这个树的根。但是为方便管理有其他层级关系进程们,又在简单的父子关系之外增加了进程组和会话的关系,从而方便进程的管理。当一个用户登录到系统时登录程序就会将登录的shell设置成一个会话首领和组长进程。简单来说是这样的一种关系 会话 > 包括进程组 > 包括进程 。而增加这样的额外关系仅仅是为了方便管理控制所有由关系的进程(作业)。在Linux中一个进程除了是属于他父进程的子进程外他还是一个进程组的成员,而同一进程组有这样一个特点-----信号会被传递到同一进程组的所有进程。

一般情况下一个进程创建的一个子进程这个子进程就和父进程同属一个进程组,那么如果都是这样的情况那Linux中应该就只有一个进程组。所以这种情况其实是一种特殊情况。这种情况会导致不同用户的进程之间可以发送信号。所以Linux允许进程修改自己或子进程(执行exec前)的进程组和会话组,从而将进程进行又一层的分组管理。进程可以通过调用setpgid来修改自己的进程组

int setpgid(pid_t pid,pid_t pgid);

这个调用必须满足

调用进程不能是当前进程组的首领进程。

调用进程不能是会话首领进程。

pid只能是当前调用进程的pid(传入0),或者当前调用进程的子进程(未执行exec调用前),而且因为子进程和父进程的运行顺序不确定通常情况下要在子进程和父进程中同时调用此接口,确保子进程运行之初就在正确的进程组。

一个进程还可以将自己设置为一个新的会话的新进程组成员通过调用setsid()

pid_t setsid(void);

调用的进程不能是一个进程组的或会话的首领进程,成功时返回新创建的会话的会话ID。

总之会话和进程组常常用于作业控制,比如你的代码你希望他单独成为为一个组可以统一开始或结束,而不受父进程shell的的控制或者影响。反过来会话和进程组的概念也是为了方便shell管理用户的进程的,因为当进程组首领进程结束时进程组还是存在的,其他进程还是在运行的,当时当会话首领进程结束时,会话内的所有进程都会结束(ubantu14.04下测试)。

测试代码

#include #include#include#include

int main(char argc,char*argv)

{

pid_t newSid;

newsid=setsid();

printf("The new sid is %d\n",newsid);while(1)

{

sleep(1);

printf("I ma Running\n");

}return 0;

}

作用 和会话期 进程组_进程 进程组 会话的关系及作用相关推荐

  1. java获取进程端口_查看进程的端口号

    一. netstat windows 下 1.查找指定目标进程(java的atf web工程) tasklist  -v |find "java" 图像名        PID j ...

  2. mysql进程通信_事务(进程 ID 70)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且...

    访问一个内部调研页面,打开第二次就死锁了,搜索了一下,一种可能的情况类似下面这种场景,SQLServer中似乎嵌套的SQL语句会造成死锁,用nolock hint可以解决这个问题. update  t ...

  3. ygo游戏王卡组_游戏王卡组教程系列【光道卡组】

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 话说以欧尼斯特(外号城叔)为封面发售的508,使得光属性更加强大,而封面诚叔的效果以及里面带有的"光道"系列卡更是现在的一线卡组,好了 ...

  4. ygo游戏王卡组_游戏王卡组:备受冷落传说级卡组,奥里哈钢本家大哥的种族

    这次我们要介绍的卡组是爬虫女妖卡组,大家也知道爬虫女妖卡组就是扶不起的阿斗.虽然说本家是有着最强大的,可以得到游戏胜利条件的卡片,但是这个卡组就是强大不起来.能有什么办法呢?现在整个卡组打得比较杂技, ...

  5. ygo游戏王卡组_游戏王卡组第六弹:游戏衍生卡组最风光的卡组之一,完全碾压社长...

    大家好,我是小锋说游戏王 游戏王一代是一个神奇的一代,因为在这一代里衍生出了很多卡组,光主角游戏的卡组,就衍生出了非常多种风格的卡组.小编做的前五档节目都是主角卡组衍生出来的,有强有弱.而且小编还有很 ...

  6. linux守护进程写法_搞懂进程组、会话、控制终端关系,才能明白守护进程如何创建...

    守护进程 概念: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程.周期性的执行某种任务或等待处理某些发生的事件. Linux系统有很多守护进程,大多数服务都是用守护进程实现的 ...

  7. 会话、进程组与僵死进程

    1.   终端 在Linux系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal),Shell进程启动的其他进程的控制终 ...

  8. 得到进程id_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?

    守护进程 概念: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程.周期性的执行某种任务或等待处理某些发生的事件. Linux系统有很多守护进程,大多数服务都是用守护进程实现的 ...

  9. 进程间通信方式_第四十九期-Linux内核中的进程概述(4)

    作者:熊轶翔@熊仙僧,中国科学院软件研究所智能软件研究中心 上一章我们学习了进程调度,进程调度的过程是由操作系统内核管理的.在Linux中还存在着另一种由内核管理且又与进程运行息息相关的操作,也是就在 ...

  10. c++ createtoolhelp32snapshot取进程路径_理解进程和线程

    进程和线程是操作系统里很重要的概念,但是所有的东西都会落实到代码.看起来很复杂的进程线程,其实在操作系统的代码里.也只是一些数据结构和算法.只不过他比一般的数据结构和算法可能复杂点.但是学习方法还是一 ...

最新文章

  1. TRichEdit_控制TRichEdit组件滚动
  2. 亿能 性能测试课程 2013年度 公开课 深圳站
  3. 两页面之间 转发请求,传递参数
  4. 大规模数据处理开源软件
  5. HTC扣动板机出现射线。获得射线与VR中物体的交点并用linerender表示出来
  6. unity技美31——Curvy Splines寻路插件绘制赛道,并且生成OBJ教程
  7. 2018.8.2课堂笔记
  8. echarts实现数据可视化
  9. NIOS II使用经验
  10. SQL获取当天0点0分0秒和23点59分59秒方法
  11. 买的香港云服务器怎么用?云服务器使用教程
  12. 【从零开始学习 UVM】6.4、UVM 激励产生 —— uvm_do 宏详解
  13. 【转】互操作性的区块链系统设计理念
  14. SAE上使用cron定时发微博
  15. 通信码元速率和带宽理解
  16. Android:线性布局介绍,线性布局weight属性,线性布局微调参数gravity,线性布局divider
  17. 进程与程序的区别和联系
  18. HTTPS与TOKEN
  19. goland下载与安装教程(详细)
  20. 第十二讲:继承与派生

热门文章

  1. 主干网络系列(2) -ResNet V2:深度残差网络中的恒等映射
  2. 图像处理代码合集:特征提取-图像分割-分类-匹配-降噪
  3. LeetCode之翻转字符串里的单词
  4. 爬虫2 urllib用法
  5. springboot 使用spring security
  6. 嵌入式Linux驱动学习之路(二)u-boot体验
  7. Oracle中的COALESCE,NVL,NVL2,NULLIF函数
  8. 镜像分割与高可用性灾难恢复
  9. 屏幕录像软件Community Clips Recorder简介及其使用技巧
  10. 用DataFormatString格式化GridView 【转】