pid,ppid,pgid,sid进程间关系

进程间关系

进程组

Linux 下每个进程都隶属于一个进程组,因此它们除了 PID 信息外,还有进程组 ID(PGID)。我们可以用如下函数来获取指定进程的 PGID:

#include <unistd.h>
pid_t getpgid( pid t pid );

该函数成功时返回进程 pid 所属进程组的 PGID,失败则返回-1并设置erro。

每个进程组都有一个首领进程,其 PGID 和 PID 相同。进程组将一直存在,直到其中所有进程都退出,或者加入到其他进程组。

会话

一些有关联的进程组将形成一个会话(session)。Linux并未提供所谓会话ID(SID)的概念,但是认为其等同于PGID,用如下函数来获取指定进程的 SID:

#include <unistd.h>
pid_t getsid( pid_t pid);

用ps查看进程间关系

执行ps命令可以查看进程、进程组和会话之间的关系:

ps -o pid,ppid,pgid,sid,comm | less

在这里插入图片描述

我们是在 bash shell 下执行 ps 和 less 命令的,所以 ps 和 less 命的父进程是 bash 命令。这可以从PPID(父进程 PID)列看出。这3条命令创建了1个会话 (SID是1943)和2个进程组 (PGID分别是 1943 和 2298)。bash 命令的 PID、PGID 和SID 都相同,很明显它既是会话的首领,也是组 1943 的首领。ps 命令则是组 2298 的首领,因为其 PID 也是2298。下图描述了此三者的关系:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值