fireaxe 阅读(86) 评论(0)
session: 
session其实就是对应着一个termial,启动终端后在这个termial中创建的所有进程都属于这个session。

进程组: 
进程组对应着termial中执行的一条命令行,这个命令行创建的进程及其子进程都属于该进程组。如果命令行加上“&”,则属于后台程序组;如果不加“&”则属于前台程序组。由于前台程序组会阻塞termial(即,前台程序结束前,无法向termial输入新命令),所以最多只能有一个前台进程组。

controlling process:
在terminal中输入“ps“,必然会有一个命令为CMD为bash的进程,这个进程就是当前terminal的controlling process,用于处理各种输入。

setpgid:
这个函数的用处好像不大

setsid:
setsid可用于创建daemon进程。一个非进程组leader进程调用setsid后,会生成一个session,而新的session不会绑定terminal,因此也就生成了一个daemon进程。


总结:
进程组对应着一个命令行,因此也就是对应着一个应用程序的入口。因此进程组也就为用户控制某一程序启动的一组进程提供了方便。
terminal应该是对应着一个用户,命令行形式下的linux,每个用户应该只能使用一个terminal,因此可以方便的对一个用户的所有进程进行控制。
当然现在的linux都是支持同一用户登录多个terminal的,同时窗口界面也导致同一用户会同时启动多个terminal,因此terminal 之上还有一层用户管理。使用”ps -u"命令可以查看某个用户建立的所有进程。