Estou usando o Mac OS X Terminal. E eu uso Ctrl+Z ou Ctrl+C para parar alguns programas. Mas percebi que não sei exatamente o que eles estão fazendo. Quais são eles e qual a diferença entre eles?
Esta questão foi uma Pergunta de super usuário da semana.
Leia o 13 de março de 2011 entrada de blog para mais detalhes ou envie seu próprio Pergunta da semana.
Ao controle+Z é usado para suspender um processo enviando o sinal SIGSTOP
, que não pode ser interceptado pelo programa. Enquanto Ao controle+C é usado para matar um processo com o sinal SIGINT
e pode ser interceptado por um programa para que ele possa se auto-limpar antes de sair ou não sair.
Se você suspender um processo, isso será exibido no shell para informar que ele foi suspenso:
[1]+ Stopped yes
No entanto, se você matar um, você não verá nenhuma confirmação além de ser descartada para um prompt do shell. Quando você suspende um processo, você também pode fazer coisas extravagantes com ele. Por exemplo, executando isso:
fg
Com um programa suspenso, ele será levado de volta ao primeiro plano.
E executando o comando
bg
Com um programa suspenso permitirá que ele seja executado em segundo plano (a saída do programa ainda irá para o TTY, no entanto).
Se você quer matar um programa suspenso, você não precisa trazê-lo de volta fg
Primeiro, você pode simplesmente fazer o comando:
kill %1
Se você tiver vários comandos suspensos, executando
jobs
irá listá-los, assim:
[1]- Stopped pianobar
[2]+ Stopped yes
Usando %#
, Onde #
é o número do trabalho (aquele entre colchetes do jobs
saída) com bg
, fg
ou kill
, pode ser usado para executar a ação nesse trabalho.
Ctrl + Z suspende o processo com SIGTSTP, você pode resumir mais tarde. Ctrl + C mata o processo com SIGINT, que termina o processo, a menos que seja manipulado / ignorado pelo alvo, então você não pode retomar o processo. Há também um SIGSTOP que pode ser enviado por kill()
e qual o processo não pode interceptar. O SIGCONT é a contraparte do SIGSTOP e do SIGTSTP que suspende o processo.
CTRL + Z para (pausa) um trabalho
CTRL + C termina um trabalho
com CTRL + C você não pode retomar o processo, mas com CTRL + Z o trabalho pode ser retomado apenas digitando o comando promt:
fg %1
se você tem vários processos em pausa, então você deve fazer
jobs
para ver a saída e selecionar o número apropriado para retomar, e.
fg %3
retoma o terceiro trabalho na lista. Você também pode ter trabalhos em execução no plano de fundo com
bg %n
onde n é o número do trabalho.
Cntrl + Z pause the currently running process.
E
Cntrl + C simply terminates the running process.
Usando Cntrl + C você não pode retomar o processo. onde como usando Ctrl + Z você pode retomar o processo.
use fg% 1 para retomar o processo.
CTRL+Z pára (pausa) um trabalho
CTRL+Ctermina um trabalho
Com CTRL+C você não pode retomar o processo, mas com CTRL+Z o trabalho pode ser retomado apenas digitando no prompt de comando:
fg% 1
Se você tem vários processos em pausa, então você deve fazer
empregos
para ver a saída.
As respostas anteriores estão corretas, mas por alguma razão desconhecida Ctrl-Z suspende todos os processos filhos também, mas killall -SIGSTOP ... suspende apenas o processo (pai) mais frontal e deixa os filhos rodarem como quiserem.