linux

来源:互联网 发布:linux .ssh目录 编辑:程序博客网 时间:2024/04/27 18:05
由于 Linux 是一个多用户系统,同一时刻,系统中运行有属于不同用户的多个进程。那么,当处于某个终端上的用户按下了 Ctrl+C 键时(产生 SIGINT 信号),系统如何知道将该信号发送到哪个进程,从而不影响由其他终端上的用户运行的进程呢?
Linux 内核通过维护会话和进程组而管理多用户进程。如图 11-3 所示,每个进程是一个进程组的成员,而每个进程组又是某个会话的成员。一般而言,当用户在某个终端上登录时,一个新的会话就开始了。进程组由组中的领头进程标识,领头进程的进程标识符就是进程组的组标识符。类似地,每个会话也对应有一个领头进程。
同一会话中的进程通过该会话的领头进程和一个终端相连,该终端作为这个会话的控制终端。一个会话只能有一个控制终端,而一个控制终端只能控制一个会话。用户通过控制终端,可以向该控制终端所控制的会话中的进程发送键盘信号。
同一会话中只能有一个前台进程组,属于前台进程组的进程可从控制终端获得输入,而其他进程均是后台进程,可能分属于不同的后台进程组。


      图 11-3 会话和进程、进程组
0 0
原创粉丝点击