网站首页 > 技术教程 正文
进程组
Liunx下每个进程都隶属于一个进程组,因此它们除了PID,还有进程组ID(PGID),我们可以用如下函数来获取指定进程的PGID:
#include <unistd.h>
pid_t getpgid(pid_t pid);
该函数成功时返回进程pid所属进程组PGID,失败则返回-1并设置errno。
每个进程组都有一个首领进程,其PGID和PID相同。进程组将一直存在,直到其中所有进程都退出,或者加入到其他进程组。
下面这个函数用来设置PGID:
#include <unistd.h>
int setpgid(pid_t pid, pid_t pgid);
这个函数将PID为pid的进程的PGID设置为pgid。
- 如果pid和pgid相同,则由pid指定的进程将被设置为进程组首领
- 如果pid为0,则表示设置当前进程的PGID为pgid
- 如果pgi为0,则使用pid作为目标PGID。
setpgid调用成功时返回0,失败返回-1并设置errno。
这里需要注意的是:
一个进程只能设置自己或者其子进程的PGID。并且,当子进程调用exec系列函数后,我们也不能再在父进程中对它设置PGID。
会话
一些有关联的进程组将形成一个会话(session)。下面的函数用于创建一个会话:
#include <unistd.h>
pid_t setsid(void);
这个函数不可以由进程组的首领进程调用,否则将产生一个错误。对于非组首领的进程,调用该函数不仅创建新会话,而且有如下额外效果:
- 调用进程会成为会话的首领,此时该进程是新会话的唯一成员
- 新建一个进程组,其PGID就是调用进程的PID,调用进程成为该组的首领
- 调用进程将甩开终端(如果有的话)
该函数成功时返回新的进程组的PGID,失败则返回-1并设置errno。
Linux进程并未提供所谓会话ID(SID)的概念,但Linux系统认为它等于会话首领所在的进程组PGID,并且提供如下函数来读取SID:
#include <unistd.h>
pid_t getsid(pid_t pid);
用ps命令查看进程关系
我们在bash shell下执行ps和less命令,所以ps和less命令的父进程是bash命令,我们可以从PPID(父进程PID)一列可以看出。这三条命令创建了一个会话ID(SID是12308)和两个进程组ID(PGID分别是12308和12316)。bash命令的PID、PGID和SID都相同,很明显它既是会话的首领也是组12308的首领。ps命令则是组12316的首领,因为其PID也是12316。
猜你喜欢
- 2025-06-19 【Linux系统编程】特殊进程之守护进程
- 2025-06-19 linux进程通信方式对比(linux进程和线程通信)
- 2025-06-19 Linux系统编程之进程创建(linux进程的创建与控制实验报告)
- 2025-06-19 Linux-进程性能信息统计(linux进程运行时间)
- 2025-06-19 Linux内核进程与调度原理(linux内核进程和用户进程)
- 2025-06-19 linux 根据进程名杀死进程 -kill进程名
- 2025-06-19 Linux-多进程开发,看完就明白了(linux创建多个进程)
- 2025-06-19 图解Linux进程优先级(在linux中,进程优先级的相关参数有多个)
- 2025-06-19 linux之进程相关(linux 进程)
- 2025-06-19 Linux系统编程之进程控制(linux进程控制函数)
你 发表评论:
欢迎- 最近发表
-
- linux CentOS检查见后门程序的shell
- 网络安全工程师演示:黑客是如何使用Nmap网络扫描工具的?
- Linux中ftp服务修改默认21端口等(linux修改ftp配置文件)
- Linux系统下使用Iptables配置端口转发,运维实战收藏!
- 谈谈TCP和UDP源端口的确定(tcp和udp的端口号相同吗)
- Linux 系统 通过端口号找到对应的服务及相应安装位置
- 快速查找NAS未占用端口!Docker端口秒级排查+可视化占坑双杀技
- 【知识杂谈#2】如何查看Linux的(本地与公网)IP地址与SSH端口号
- 如何在Linux中查询 DNS 记录,这三个命令可谓是最常用、最经典的
- 【Linux系统编程】特殊进程之守护进程
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)