[09]APUE:进程关系

时间:2021-07-26 21:19:48

[a] getpgid / setpgid

#include <unistd.h>
pid_t getpgid(pid_t pid) //成功返回进程组 ID,出错返回 -1
int setpgid(pid_t pid, pid_t pgid) //成功返回0,出错返回 -1 
  • setpgid 用于改变指定进程的进程组或创建新的进程组
    • 若 pid 为 0,则将调用进程自身转移到指定进程组
    • 若 pgid 为 0,则以 pid 为首进程创建新的进程组
    • 若二者同时为 0,即以调用进程自身为首进程创建新的进程组
  • getpgid(0) 显示调用进程自身的进程组 ID

[b] getsid / setsid

#include <unistd.h>
pid_t getsid(pid_t pid)
pid_t setsid(void)
//成功返回会话首进程的进程组 ID,出错返回 -1 
  • getsid 用于获取指定进程所在的会话 ID,即会话首进程的进程组 ID
  • setsid 用于新建会话,调用此函数的进程不能是进程组首进程,通常用子进程调用此函数