Duas janelas, mesmo usuário, com prompts do bash. Na janela-1 digite:
$ mkfifo f; exec <f
Portanto, o bash agora está tentando ler do descritor de arquivo 0, que é mapeado para pipe nomeado f
. Na janela-2 digite:
$ echo ls > f
Agora window-1 imprime um ls e então o shell morre. Por quê?
Próxima experiência: abra a janela-1 novamente com exec <f
. Na janela-2 digite:
$ exec 3>f
$ echo ls >&3
Após a primeira linha acima, a janela-1 acorda e imprime um prompt. Por quê? Após a segunda linha acima, a janela-1 imprime a ls
saída e o shell permanece ativo. Por quê? Na verdade, agora na janela-2, echo ls > f
não fecha o shell da janela-1.
A resposta deve ter a ver com a existência do descritor de arquivo 3 da janela-2 referenciando o pipe nomeado?!