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?
command-line
chaitanya lakkundi
fonte
fonte
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 executandofg
(ou%x
ondex
está o número do trabalho, como mostrado emjobs
).Podemos testar isso executando
nano TEST
, pressionando Control+ Ze depois executandops aux | grep TEST
. Isso nos mostrará que onano
processo ainda está em execução: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.
fonte
bg
(em vez defg
) 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 outroctrl 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
http://en.wikipedia.org/wiki/Control-C
fonte
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) ebg
(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:Como matar um processo suspenso em segundo plano?
Usando o
kill
comando:kill %n
Onden
é o número exibido pelojobs
comando. Então, se eu quero matar gato:kill %1
.fonte
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.fonte
Isso deve ajudar
fonte
SIGTSTP
, que pode ser capturado pelo programa. Há quatro sinais diferentes, o que pode suspender um programaSIGSTOP
,SIGTSTP
,SIGTTIN
,SIGTTOU
. Desses, apenasSIGSTOP
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.fonte