A saída de um comando é canalizada para outro; como fechar os dois?

2

Eu chamo o Qt Assistant como sugerido em stackoverflow :

nc -lkU ~/.assistantfifo | assistant -enableRemoteControl &

A janela do Assistente do Qt é aberta e, se eu chamar o jobs , ele retornará:

[1]  + running    nc -lkU ~/.assistantfifo | assistant -enableRemoteControl

Então, eu fecho o Qt Assistant (apenas clicando em "x"). Agora, jobs retorna:

[1]  + running    nc -lkU ~/.assistantfifo | 
       done       assistant -enableRemoteControl

Portanto, nc continua funcionando e eu tenho que digitar killall nc .

Como fazer o nc terminar também, quando eu fechar o Qt Assistant? Ou, provavelmente, eu deveria fazer isso de alguma forma diferente?

    
por Dmitry Frank 03.04.2014 / 23:30

2 respostas

3

O comando que você está executando ( nc a.k.a. netcat ) escutará a entrada quando executado com o sinalizador -l . Normalmente, o netcat no modo de escuta será fechado quando receber o caractere de final de arquivo, mas o -k flag evita isso. Em outras palavras, o netcat não fecha até que você o mate por causa da maneira como você chamou o comando.

Veja a página de manual para mais informações.

    
por 03.04.2014 / 23:51
1

Se você quiser destacar o segundo processo, também é necessário agrupá-los com

$ ( nc -lkU ~/.assistantfifo | assistant -enableRemoteControl ) &

caso contrário, não funcionará. As chaves são necessárias para separar os dois processos.

    
por 04.04.2014 / 18:51