setsid()
定义:若当前进程不是进程组长,创建一个新会话;若当前进程已经是进程组长,返回错误;
性质:一个新会话创建后,当前进程的PID即是新会话ID又是进程组ID,即当前进程即是session leader又是group leader,且没有控制终端(若再调用setsid之前该进程又一个控制终端,那么这种联系也会断开)。
一般使用:先调用fork(),然后使其父进程终止,而子进程继续。
(因为子进程继承了父进程的进程组ID,而子进程的pid是新分配的,两者不可能相等,所以这就保证了子进程一定不会是进程组长)