se eu quiser exibir "aaa" na tela:
(1)$: echo aaa | cat ... works OK
(2)$: echo aaa | ( cat ) ... works OK
(3)$: echo aaa | ( cat & ) ... NOT working
(4)$: ( echo aaa & ) | cat ... works OK
(5)$: echo aaa | ( cat <&0 & ) ... works ok in BASH (but not in SH)
(6)$: echo aaa | ( cat <&3 & ) 3<&0 ... works ok in BASH and SH
A confusão de (3) e (4) -> processo desanexado ainda tem saída conectada que pode ser controlada, usada, redirecionada ..., mas não é entrada!
Minha pergunta é: alguém entende por que e como a linha (5) funciona ???
... "<& 0" é a abreviação de "0 <& 0", por que redirecionar 0 a 0 é solução e o que realmente acontece por trás da entrada do processo desanexado. O subshell não é o problema, usar chaves {...} em vez de (...) fornece os mesmos resultados.
... e question2: existe melhor solução para "dar entrada ao processo desanexado" do que a linha (6).