Linux进程间的关系

本文详细探讨了Linux系统中进程间的关系,包括进程组、会话的概念,如何通过ps命令查看这些关系,以及系统资源限制、改变工作目录和根目录的方法。此外,还讲解了如何将服务器程序后台化。
摘要由CSDN通过智能技术生成

Linux进程间的关系

Linux下每个进程都隶属于一个进程组,每个进程都包含PID、PGID、SID。



前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、进程组

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

上面函数查看进程的PID所属的PGID信息。该函数成功时返回进程pid所属进程组的 PGID,失败则返回-1并设置errno。
每个进程组都有一个首领进程,首领进程的特点:
PGID和PID相同。
进程组将一直存在,直到其中所有进程都退出,或者加入到其他进程组。

#include <unistd.h>
int setpgid(pid_t pid, pid_t pgid);

该函数将PID为pid的进程的PGID设置为pgid。如果pid和pgid相同,则由pid指定的进程将被设置为进程组首领;如果pid为0,则表示设置当前进程的PGID为pgid;如果pgid为0,则使用pid作为目标PGID。setpgid函数成功时返回0,失败则返回-1并设置errno。
一个进程只能设置自己或者其子进程的PGID。并且,当子进程调用exec系列函数后,我们也不能再在父进程中对它设置PGID。

二、会话

一些此有关联的进程组将形成一个会话。下面的函数用于创建一个会话:

#include <unistd.h>
pidt setsid(void);

该函数不能由进程组的首领进程调用,否则将产生一个错误。对于非组首领的进程,用该函数不仅创建新会话,而且有如下额外效果:
1.调用进程成为会话的首领,此时该进程是新会话的唯一成员。
2.新建一个进程组,其PGID 就是调用进程的PID,调用进程成为该组的首领。调用进程将甩开终端。

该函数成功时返回新的进程组的PGID,失败则返回-1并设置errno.
Linux进程并未提供所谓会话ID(SID)的概念,但Linux系统认为它等于会话

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值