首页 > 代码库 > 进程控制(十四)---进程组

进程控制(十四)---进程组

  在Linux系统中,每个进程都会属于一个进程组,而每个进程组都有一个进程组ID(pgid),这个进程组ID的值等于组长进程的进程ID。通常在shell下执行的第一个程序将成为一个组长进程,其后生成的所有与此进程有血缘关系的进程都属于此进程组(除非子进程使用setpgid函数改变自己的进程组ID)。
=======================================================
  Linux系统提供了 getpgrp 函数和 getpgid 函数来读取进程的进程组 ID ,提供了 setpgid 函数来设置进程的进程组 ID。
函数原型:
技术分享
技术分享
函数参数:
  • getpgrp 函数没有参数,只能用来读取调用进程所属的进程组 ID
  • getpgid 函数用来读取进程 ID 为pid的进程组 ID,当 pid=0时,就相当于 getpgrp 函数
  • setpgid 函数用来设置进程 ID 为pid的进程的进程组 ID 为 pgid。如果pid=0,那么相当于设置调用进程本身的进程组ID;如果pgid=0,那么相当于设置进程组ID和pid相同。要注意的是:一个进程只能够为进程本身或者其子进程设置新的进程组 ID,而且新的进程组和原来的进程组必须是属于同一个会话(session)
返回值:
  • getpgrp:总会调用成功,返回调用进程的进程组ID
  • getpgid:调用成功返回pid的进程组ID,调用失败返回 -1
  • setpgid:调用成功时返回 0, 调用失败时返回 -1

进程控制(十四)---进程组