Eu sempre pensei que Ctrl-Z
em um terminal (no modo canônico) gera SIGSTOP
, mas de acordo com man 3 tcsetattr
, gera SIGTSTP
em vez disso. No entanto, em ambos os casos, SIGCONT
é usado para retomar os processos parados.
Qual é a razão que Ctrl-Z
não gera apenas SIGSTOP
? Existe um caso em que é útil para um programa lidar SIGTSTP
de maneira diferente SIGSTOP
?
Como KILL, STOP não pode ser capturado, bloqueado ou ignorado: ele sempre interrompe o processo de recebimento. Por outro lado, o TSTP pode ser ignorado ou tratado de maneira diferente; por exemplo, shells e Emacs, configuram manipuladores TSTP para lidar com CtrlZeles mesmos. Esse comportamento nos shells garante que pressionar CtrlZseja sempre seguro e não o deixará preso em um terminal com um processo interrompido e sem possibilidade de retomá-lo.