已经有SIGSTOP了,为什么还要有SIGTSTP呢?

已经有SIGSTOP了,为什么还要有SIGTSTP呢?

我一直认为Ctrl-Z在终端中(在规范模式下)会生成SIGSTOP,但根据man 3 tcsetattr,它会生成SIGTSTP。但是,在这两种情况下,SIGCONT都用于恢复停止的进程。

Ctrl-Z不生成的原因是什么SIGSTOP?是否存在一种情况,程序以SIGTSTP不同于 的方式处理是有用的SIGSTOP

答案1

与 KILL 一样,STOP 不能被捕获、阻止或忽略:它总是停止接收进程。另一方面,TSTP 可以被忽略或以不同的方式处理;例如,shell 和 Emacs,设置 TSTP 处理程序来处理CtrlZ它们自己。 shell 中的这种行为可确保按下CtrlZ始终安全,并且不会让您陷入进程已停止且无法恢复的终端。

相关内容