Alguém pode me dizer a diferença entre ctrl+ ze ctrl+ c?
Quando estou no terminal, ambas as combinações interrompem o processo atual, mas qual é exatamente a diferença entre ambas?
Alguém pode me dizer a diferença entre ctrl+ ze ctrl+ c?
Quando estou no terminal, ambas as combinações interrompem o processo atual, mas qual é exatamente a diferença entre ambas?
Respostas:
Se deixarmos os casos extremos de lado, a diferença é simples. Control+ CAborta a aplicação quase imediatamente, enquanto Control+ Zshunts-lo em segundo plano, suspenso.
O shell envia sinais diferentes para os aplicativos subjacentes nessas combinações:
Control+ C(caractere de controle intr
) envia SIGINT, o que interromperá o aplicativo. Geralmente, o processo é interrompido, mas isso depende do aplicativo.
Control+ Z(caractere de controle susp
) envia o SIGTSTP para um aplicativo em primeiro plano, efetivamente colocando-o em segundo plano, suspenso. Isso é útil se você precisar interromper algo como um editor para obter alguns dados necessários. Você pode voltar para o aplicativo executando fg
(ou %x
onde x
está o número do trabalho, como mostrado em jobs
).
Podemos testar isso executando nano TEST
, pressionando Control+ Ze depois executando ps aux | grep TEST
. Isso nos mostrará que o nano
processo ainda está em execução:
oli 3278 0.0 0.0 14492 3160 pts/4 T 13:59 0:00 nano TEST
Além disso, podemos ver (a partir desse T, que está na coluna de status) que o processo foi interrompido . Por isso, ainda está vivo, mas não está funcionando ... Pode ser retomado.
Alguns aplicativos falham se eles tiverem processos externos em andamento (como uma solicitação da Web) que podem atingir o tempo limite enquanto dormem.
bg
(em vez de fg
) para reativar uma aplicação que tem sido Ctrl + Z'ed sem colocá-lo de volta para o primeiro plano; efetivamente dando a você o controle do shell que iniciou o aplicativo e do próprio aplicativo, como se você tivesse usado &
ao iniciar o aplicativo. Isso muitas vezes vem a calhar quando você se esqueceu de iniciá-lo com &
:)
fg
novamente!
ctrl c
ou outro ctrl z
? O padrão é o SID (bash)?
Control+ Zsuspende um processo ( SIGTSTP
) e Control+ Cinterrompe um processo ( SIGINT
)
http://en.wikipedia.org/wiki/Control-Z
Em sistemas tipo Unix, Control + Z é o mapeamento de teclado padrão mais comum para a sequência de teclas que suspende um processo
http://en.wikipedia.org/wiki/Control-C
Nos sistemas POSIX, a sequência faz com que o programa ativo receba um sinal SIGINT. Se o programa não especificar como lidar com essa condição, ele será encerrado. Normalmente, um programa que lida com um SIGINT ainda será finalizado, ou pelo menos finalizará a tarefa em execução dentro dele.
Ctrl+ Cé usado para matar um processo com sinal SIGINT
, em outras palavras, é uma morte educada .
Ctrl+ Z é usado para suspender um processo enviando o sinal SIGTSTP
, que é como um sinal de suspensão, que pode ser desfeito e o processo pode ser retomado novamente.
No entanto, quando um processo é suspenso, podemos retomar novamente fg
(retomar em primeiro plano) e bg
(retomar em segundo plano), mas não consigo retomar um processo interrompido, que é a diferença entre usar Ctrl+ C& Ctrl+ Z.
Como podemos visualizar processos suspensos?
O jobs
comando fornece uma saída como esta:
[1]- Stopped cat
[2]+ Stopped vi
Como matar um processo suspenso em segundo plano?
Usando o kill
comando:
kill %n
Onde n
é o número exibido pelo jobs
comando. Então, se eu quero matar gato: kill %1
.
Simplificando:
CTRL-C solicita que o programa seja interrompido .
CTRL-Z força o programa a suspender e entrar em segundo plano .
Isso permite que você retomá-lo mais tarde com o comando fg
. As tarefas em segundo plano restantes são eliminadas quando você sai do shell de logon.
Isso deve ajudar
Ctrl+ Zé usado para suspender um processo enviando o sinal SIGSTOP, que não pode ser interceptado pelo programa. Enquanto Ctrl+ Cé usado para interromper um processo com o sinal SIGINT, e pode ser interceptado por um programa para que ele possa se limpar antes de sair ou não sair.
SIGTSTP
, que pode ser capturado pelo programa. Há quatro sinais diferentes, o que pode suspender um programa SIGSTOP
, SIGTSTP
, SIGTTIN
, SIGTTOU
. Desses, apenas SIGSTOP
não podem ser bloqueados. Os outros três são usados pelo terminal para interromper o processo sob diferentes condições.
quando você pressiona ctrl+ c, significa que você envia o SIGINT ao seu processo. como você digite o comando: kill -SIGINT <your_pid>
. Isso matará seu processo. É por isso que você não pode vê-lo ao emitir o comando ps .
Quando você pressiona ctrl+ z, significa que você envia o SIGSTOP ao seu processo. como você digite o comando: kill -SIGKSTOP <your_pid>
. Parará seu processo, mas o processo ainda está vivo. Assim, você pode reativar seu processo enviando SIGCONT ao seu processo.