一、进程间关系
1、进程组
Linux下每个进程都隶属于一个进程组,因此它们除了PID信息外,还有进程组ID(PGID)。用下面这个函数来获取指定进程PGID
#include<unistd.h>
pid_t getpgid(pid_t pid);
该函数成功时返回进程pid所属进程组的PGID,失败则返回-1,并设置errno。
每个进程都有一个首领进程,其PGID和PID相同,进程组将一直存在,直到其中所有进程都退出,或者加入到其他进程组。
设置PGID的函数
#include<unistd.h>
int setpgid(pid_t pid, pid_t pgid);
该函数将PID为pid的进程的组ID设置为pgid。如果pid和pgid相同,则由pid指定的进程将被设置为进程组首领;如果pid为0,则表示当前进程的PGID为pgid;如果pgid为0,则使用pid作为目标PGID. setpgid函数成功时返回0,失败时返回-1,并设置errno
一个进程只能设置自己或者其子进程的PGID。并且,当子进程调用exec系列函数后,我们也不能再在父进程中对它设置PG