2012-09-13 12:51:29 +0000 2012-09-13 12:51:29 +0000
88
88

Qual é o efeito do CTRL + Z numa aplicação unix\Linux

Fiquei curioso e confuso que qual é exactamente o comportamento do CTRl+Z.

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

Mas o que acontece exactamente.

Continua a fazer o seu trabalho, ou é suspenso, e pára no ponto em que estava.

E se for interrompido nesse ponto, e qual é o significado de trabalho de fundo.

Respostas (4)

74
74
74
2012-09-13 12:57:13 +0000

Um “trabalho de fundo” é apenas um que não está a interagir com o utilizador – não controla o tty e apenas faz a sua coisa (geralmente silenciosamente). Um “trabalho em primeiro plano” é o inverso, detém o controlo do tty para interagir com o utilizador.

Control-Z suspende o processo em 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 os shells normalmente fazem). Isto irá geralmente trazê-lo de volta à sua concha, a partir da qual pode geralmente introduzir o comando bg para mover o processo de suspensão justa para o fundo (deixando-o continuar a correr) ou fg para o trazer de volta para o primeiro plano.

58
58
58
2012-09-13 12:57:09 +0000

Ao pressionar Ctrl+Z envia o sinal TSTP para o seu processo. Isto pára a execução (o núcleo não agendará mais tempo de CPU para o processo) e o processo está à espera de um CONT para continuar o processamento.

Pode emular/replicar isto via kill -TSTP e kill -CONT (uma vez que kill enviará um sinal nomeado ao seu processo, apesar do nome!)

A shell tem a funcionalidade de ‘background’ do processo, mas esta é uma relação entre a shell e o processo. O processo em si não tem realmente o conceito de ‘background’ ou ‘foreground’.

Ver aqui para mais informações.

15
15
15
2012-09-13 13:02:52 +0000

Considere este comando, que demora cerca de 4,5 segundos no meu portátil:

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

Ao premir Ctrl+Z, o cálculo será suspenso. 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 à execução:

echo 2^10000000 | bc -lq | wc -c &
9
9
9
2012-09-13 12:57:30 +0000

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

Ver http://linuxreviews.org/beginner/jobs/ para mais informações.