Stay Hungry,Stay Foolish!

SIGHUP非进程挂起

SIGHUP

https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html

hang up容易让人联想到进程挂起,

实际上这个挂起,是终端挂起。

 

Macro: int SIGHUP

The SIGHUP (“hang-up”) signal is used to report that the user’s terminal is disconnected, perhaps because a network or telephone connection was broken. For more information about this, see Control Modes.

This signal is also used to report the termination of the controlling process on a terminal to jobs associated with that session; this termination effectively disconnects all processes in the session from the controlling terminal. For more information, see Termination Internals.

 

 

tty终端

https://www.zhihu.com/question/21711307

 

作者:大川
链接:https://www.zhihu.com/question/21711307/answer/2231006377
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上古时期,都有实体

理解完全不是难事

这个IBM的广告,美女左手是terminal,右手是console

底图来源:https://www.ibm.com/ibm/history/ibm100/images/icp/Z491903Y91074L07/us__en_us__ibm100__selectric__selectric_2__900x746.jpg
  • terminal 相对的是console
    • terminal是终端,不在主机上,远端控制
    • console是主机上的面板开关,本机控制
  • terminal是一个设备,最早借用了teletypewriter的产品形态,简称tty
    • 长得像台打字机,其实输入输出确实都打印在纸上
    • 后来进化出一个crt显示器

 

 

进程挂起

https://zhuanlan.zhihu.com/p/500263838

 

除了我们常说的进程五种基本状态——创建,就绪,阻塞,运行,终止外,还有一种非常重要的进程状态——进程挂起状态,今天就来说说进程的挂起。

 

进程挂起的定义:

 

当系统资源紧张的时候,操作系统会对在内存中的资源进行更合理的安排,这时就会将将某些优先级不高的进程设为挂起状态,并将其移到内存外面,一段时间内不对其进行任何操作,当条件允许的时候,会被操作系统再次调回内存,重新进入等待被执行的状态即就绪态,

 

 

 

 

终端挂起对进程的影响

https://www.cnblogs.com/sparkdev/p/12146305.html

 

session 的诞生与消亡

 

通常,新的 session 由系统登录程序创建,session 中的领头进程是运行用户登录 shell 的进程。新创建的每个进程都会属于一个进程组,当创建一个进程时,它和父进程在同一个进程组、session 中。

 

将进程放入不同 session 的惟一方法是使用 setsid 函数使其成为新 session 的领头进程。这还会将 session 领头进程放入一个新的进程组中。

 

当 session 中的所有进程都结束时 session 也就消亡了。实际使用中比如网络断开了,session 肯定是要消亡的。另外就是正常的消亡,比如让 session 的领头进程退出。一般情况下 session 的领头进程是 shell 进程,如果它处于前台,我们可以使用 exit 命令或者是 ctrl + d 让它退出。或者我们可以直接通过 kill 命令杀死 session 的领头进程。这里面的原理是:当系统检测到挂断(hangup)条件时,内核中的驱动会将 SIGHUP 信号发送到整个 session。通常情况下,这会杀死 session 中的所有进程。

 

session 与终端的关系
如果 session 关联的是伪终端,这个伪终端本身就是随着 session 的建立而创建的,session 结束,那么这个伪终端也会被销毁。
如果 session 关联的是 tty1-6,tty 则不会被销毁。因为该终端设备是在系统初始化的时候创建的,并不是依赖该会话建立的,所以当 session 退出,tty 仍然存在。只是 init 系统在 session 结束后,会重启 getty 来监听这个 tty。

 

 

posted @ 2023-07-04 15:14  lightsong  阅读(12)  评论(0编辑  收藏  举报
Life Is Short, We Need Ship To Travel