Ctrl + c e Ctrl + z para interromper / suspender trabalhos

5

Para matar um trabalho de enforcamento, eu uso Ctrl + c , para enviar um sinal de interrupção para o trabalho interrompido. Às vezes isso não parava o trabalho, pelo menos não imediatamente. Eu posso então usar Ctrl + z para suspender o trabalho e depois matá-lo com kill %1 (ou qualquer que seja o número do trabalho).

Por que o Ctrl + z é mais poderoso que o Ctrl + c ao interferir em um trabalho? Às vezes, nem mesmo o Ctrl + z funciona. Existem outras combinações de teclas que podem ser usadas em tais situações?

Eu tentei stty -a , mas nenhuma das outras combinações de teclas listadas faz qualquer coisa por mim.

    
por pfnuesel 21.01.2016 / 16:11

1 resposta

5

Ctrl + C (caractere de controle intr ): Ele enviará sinal SIGINT para um processo e normalmente o aplicativo será abortado mas o aplicativo pode manipular esse sinal. Por exemplo, você pode manipular um sinal com a função signal() em C Language.

Ctrl + Z (caractere de controle susp ): Ele enviará sinal SIGTSTP para um processo para colocá-lo em segundo plano e como SIGINT pode ser manipulado.

O processo não irá matar imediatamente com Ctrl + C se tiver E / S de espera e você tiver que esperar para terminar sua E / S e então o aplicativo irá terminar da memória. ‌
Mas Ctrl + Z irá pausar seu processo e suas E / Ss. Tecnicamente, o sistema operacional não lhe dará tempo de CPU e, se você eliminar o processo em segundo plano, ele poderá perder alguns dados e E / S.

Para matar um processo, você tem que SIGKILL ou sinal número 9, que é o sinal mais poderoso - o sistema operacional irá matá-lo imediatamente, mas você pode perder dados, pois o programa não terá como reagir a este sinal. .

    
por 21.01.2016 / 16:34