Como criar um ouvinte para um processo bifurcado?

2

Eu quero criar um par de funções bash algo ao longo das linhas de

function generator {
    while [ 1 -le 1 ]
    do
        # run log generator > somefile.log
    done
}

function tail_log {
    generator &
    tail -f somefile.log
}

Então, eu executaria o comando tail_log para ver a saída do log. Exceto que, em vez do loop infinito, eu gostaria de permitir que o usuário pressione Q para finalizar o processo bifurcado.

Então, parece que preciso de duas coisas:

  1. uma maneira de obter o ID do processo de um processo bifurcado
  2. uma maneira de ouvir a entrada do usuário para que eu possa kill do ID do processo quando o usuário pressiona Q
por macek 23.12.2011 / 19:04

1 resposta

4
  1. $!

  2. Execute tail em segundo plano também. Em primeiro plano, use o read embutido. Na entrada, mate os dois processos em segundo plano.

    Enquanto estou nisso:

  3. while [ 1 -le 1 ]while true (consulte seção um pouco relacionada em BashPitfalls)

  4. function foo {...}foo() {...} (consulte sintaxe obsoleta sobre isso)

por 23.12.2011 / 20:08