进程组与组长进程

进程组(便于管理)
一个或多个进程的集合
可以接受同一终端的各种信号,同一个信号发送进程组就等于发送给组中的所有进程。
每个进程组有唯一的进程组id
进程组的消亡要等到组中所有的进程结束
kill发送信号给进程组


一般使用getpgid函数来获取指定进程的进程组id

eg:getpgid(getoid());

组长进程
每个进程组可以有个组长进程,组长进程的id就是进程组的id
组长进程可以创建进程组以及该组中的进程
进程组的创建从第一个进程(组长进程)加入开始
进程组的组号取第一个加入组的进程(组长进程)编号


eg: setpgid(getpid(),getpid());

第一次调用setpgid:创建进程组,调用setpgid函数的进程称为组长进程

kill -9  进程号    杀掉进程
kill -9  -进程组号    杀掉进程组
默认子进程属于父进程创建的进程组
 

问题:终端启动的两个进程,如果CTRL+C后,父子进程都接收到SIG_INT信号,停止,如果让父进程接收信号停止,子进程继续工作?

1.子进程处理忽略SIG_INT信号

2.或者将子进程加入到其他进程组,不在一个进程组即可。

奋斗为了更好的生活。
原文地址:https://www.cnblogs.com/redman274/p/12171047.html