Pergunta

Quando eu scp um arquivo, eu posso pará-lo com ^ Z e colocá-lo em segundo plano. Quando se está no fundo ele pára de imprimir o seu progresso, mas a cópia continua. Se eu primeiro plano lo novamente, ele retoma a impressão. Como ele sabe? SIGTTOU? isso acontece em um ptty padrão?

Foi útil?

Solução 2

Um colega meu e eu realmente olhou através da fonte e encontrou a resposta.

Sempre que scp está prestes a saída de impressão é executado tcgetpgrp em stdout. Isto fará voltar o processo grupo controlo do terminal (assumindo que é um terminal). Ele só irá imprimir se o grupo processo de controlar o terminal é o mesmo que o grupo processo de scp. Acontece que nenhuma sinalização necessário! (Embora ele lida com SIGWINCH para calcular o tamanho da linha de progresso).

Outras dicas

Sim, você conseguiu. O processo seria armadilha ou ignorar SIGTTOU (e talvez SIGTTIN, dependendo o que está fazendo), e em seguida, ele iria se comportar adequadamente quando receber esses sinais. Linux é, de facto enviar esses sinais em pseudo-terminais normais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top