Qual é o efeito de CTRL + Z em um aplicativo unix \ Linux?

72

Eu estava curioso e confuso que exatamente o que é o comportamento de CTRl + Z.

Eu sei, se um processo em execução em primeiro plano, e pressionamos ctrl + z, ele vai para o plano de fundo.

Mas o que acontece exatamente?

Continua fazendo seu trabalho, ou é suspenso, e parou no ponto em que estava.

E se parar nesse ponto e qual é o significado do trabalho em segundo plano.

    
por Kumar Alok 13.09.2012 / 14:51

4 respostas

57

Um "trabalho de segundo plano" é apenas um que não está interagindo com o usuário - ele não controla o tty e apenas faz a sua coisa (geralmente silenciosamente). Um trabalho de primeiro plano é o contrário, ele mantém o controle do tty para interagir com o usuário.

O Control-Z suspende o processo de primeiro plano mais recente (o último processo a interagir com o tty) (a menos que esse processo tome medidas para ignorar a suspensão, como normalmente ocorre com os shells). Isso geralmente o levará de volta ao seu shell, a partir do qual você geralmente pode inserir o comando bg para mover o processo apenas suspenso para o segundo plano (permitindo que ele continue sendo executado) ou fg para trazê-lo de volta ao primeiro plano.

    
por 13.09.2012 / 14:57
48

Pressionar Ctrl + Z envia o sinal TSTP ao seu processo. Isso interrompe a execução (o kernel não agendará mais tempo de CPU para o processo) e o processo está aguardando um CONT para continuar o processamento.

Você pode emular / replicar isso via kill -TSTP e kill -CONT (já que kill enviará um sinal nomeado ao seu processo, apesar do nome!)

O shell tem a funcionalidade para 'background' o processo, mas esta é uma relação entre o shell e o processo. O processo em si não tem realmente o conceito de 'fundo' ou 'primeiro plano'.

Veja aqui para mais informações.

    
por 13.09.2012 / 14:57
14

Considere este comando, que leva aprox. 4,5 segundos no meu laptop:

echo 2^10000000 | bc -lq | wc -c

Quando você pressionar Ctrl + Z , o cálculo será suspenso. Você tem a opção de retomar o cálculo em primeiro plano usando fg ou retomá-lo em segundo plano usando bg . Este último é mais ou menos equivalente a executar:

echo 2^10000000 | bc -lq | wc -c &
    
por 13.09.2012 / 15:02
8

Um processo é suspenso e parado ao pressionar ctrl + z. Com fg você pode mover o trabalho suspenso para o primeiro plano, com bg você pode executá-lo em segundo plano.

Consulte o link para obter mais informações.

    
por 13.09.2012 / 14:57