Linux进程间的关系

Linux进程间的关系

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


文章目录

  • Linux进程间的关系
  • 前言
  • 一、进程组
  • 二、会话
  • 三、ps命令查看进程间的关系
  • 四、系统资源限制
  • 五、改变工作目录和根目录
  • 六、服务器程序后台化


前言

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


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

一、进程组

#include 
pid_t getpgid(pid_t pid);

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

#include 
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 
pidt setsid(void);

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

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

你可能感兴趣的:(Linux系统编程和网络编程,linux,运维,vim)