进程组(便于管理)
一个或多个进程的集合
可以接受同一终端的各种信号,同一个信号发送进程组就等于发送给组中的所有进程。
每个进程组有唯一的进程组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.或者将子进程加入到其他进程组,不在一个进程组即可。
奋斗为了更好的生活。