Qual é a diferença entre os caracteres de controle ^ S e ^ Z dentro de um terminal?

3

Ao usar um emulador de terminal, pode-se parar o programa atualmente em execução com CTRL-Z ou CTRL-S . Qual a diferença entre esses sinais?

    
por Eugene Yarmash 23.05.2011 / 14:45

2 respostas

10
O

Ctrl-Z interrompe o atual programa em primeiro plano, mas não tem nada a ver com o emulador de terminal. Ele é manipulado pelo shell que você está executando atualmente. Os shells originais para o Unix não tinham esse recurso, então você pode achar que está perdendo em alguns sistemas, digamos que uma versão incorporada mínima do Linux seja inicializada no modo de usuário único.

Ctrl-S não necessariamente interrompe o atual programa de primeiro plano. Tudo o que ele faz é solicitar que o código do terminal do sistema operacional pare temporariamente de enviar dados para o seu terminal. O programa ainda está em execução e, na verdade, desde que não preencha nenhum buffer de saída, ele nem será bloqueado em uma chamada do sistema. O recurso de pausa de saída do terminal Ctrl-S é um padrão de fato antigo que remonta aos dias de teletipos , e é suportado em todos os sistemas operacionais Unixy por convenção, mas é isso pode ser desabilitado ( stty -ixon ) ou rebote para outra coisa. Editores de texto e outros programas interativos frequentemente religam Ctrl-S , por exemplo.

Você pode ver mais diferenças em como você reinicia as coisas depois de parar. Ctrl-Q reinicia a saída do terminal após um Ctrl-S , enquanto reinicia um processo parado com Ctrl-Z requer um comando fg para o controlando o shell.

    
por 23.05.2011 / 16:17
3

Uma pausa e fundos um trabalho, um congela no lugar. Com Z, você retorna a um terminal e pode executar comandos como bg para continuar o trabalho em segundo plano ou fg para continuar em primeiro plano. Com S você acaba de sair com um programa congelado olhando você na cara.

    
por 23.05.2011 / 15:05

Tags