Por que 'nohup' e 'disown' não funcionam no SoX (chamado de 'play')

4

Eu posso executar este comando:

$ play mylist.m3u

E música toca.

Em seguida, posso pressionar Ctrl-Z para suspender o trabalho e emitir bg para executá-lo em segundo plano.

No entanto, se eu executar disown e exit , a música será interrompida, mesmo que o comando play ainda seja exibido em ps .

Espero que a música continue tocando.

Também interessante

Eu corro o comando

$ play mylist.m3u &

A música não é reproduzida. O trabalho é exibido como o status stopped .

Eu também posso executar o comando

$ nohup play mylist.m3u &

E nenhuma música é reproduzida - o trabalho pára imediatamente.

No entanto,

$ nohup play mylist.m3u

A música é reproduzida, mas não posso rejeitá-la, como antes.

Parece que tudo isso está relacionado.

A maioria dos programas se comporta bem quando disown ed ou percorre nohup , mas não SoX.

Alguém sabe por quê?

    
por jwd 31.05.2012 / 07:36

3 respostas

1

SoX quer / precisa de entrada & saída ... digitando 'play xxxx' no console, você está executando normalmente, com stdin & stdout (& stderr) todos conectados.

Quando você faz o trabalho em segundo plano (com &), ele é iniciado e, em seguida, é pausado, pois está aguardando o acesso a stdin & stdout.

A mesma coisa ocorre quando você 'nohup' um trabalho. Se precisar de entrada do teclado, ele será "bloqueado" e será pausado pelo sistema até receber acesso a stdin.

renegando um processo efetivamente o corta de stdin & stdout que estavam conectados ao console que iniciou o processo.

Ainda está "em execução", mas está bloqueado (pausado) pelo sistema, pois está aguardando o acesso a stdin & stdout.

    
por 06.07.2012 / 01:16
7

Para a pessoa rara que, como eu, tinha esse problema e finalmente conseguiu no Google algo que não era sobre beisebol * e queria uma solução real:

$ play whatever.wav &>/dev/null </dev/null &

Isso é executado em segundo plano sem parar.

* O Red Sox do beisebol play , e aparentemente alguns jogadores preferem o centro das atenções ao plano de fundo . Resmungar.

    
por 09.10.2012 / 18:11
0

Também é possível usar a opção -q para garantir que o SoX não grave em std-whatever, sem redirecionar para / dev / null.

$ play filename -q &
    
por 29.05.2015 / 20:25