每个进程都只属于一个进程组,每个进程组都有自己的 ID 值来唯一标识,这个 ID 是一个正整数,默认情况下,一个子进程和它的父进程属于一个进程组

获得进程组 ID

使用 unistd.h 中的函数 pid_t getpgrp(void) 来获得所属的进程组的 id 值

改变进程组归属

unistd.h 中的 pid_t setpgrp(pid_t pid, pid_t pgid) 改变自己或者其他进程的进程组
其中参数 PID 表示进程原来的进程组 ID 值, PGID 表示更改后的进程组 ID

  • 如果参数 PID 的值为 0,那么就使用当前进程的 PID 值
  • 如果参数 PGID 是 0,那么就使用 PID 指定的进程 PID 作为进程组的 ID 值
    示例:
    如果在进程号为 15213 的进程中调用了函数 setpgrp(0,0)
    其中参数 PID 和 PGID 都为 0,那么这个函数执行完毕后,就会创建一个新的进程组,这个新进程组的 ID 值为 15213,然后把进程 15213 加入到这个新的进程组中,执行完毕后,进程组的 ID 值和进程的 PID 都是 15213