tee
funciona lendo de stdin e dividindo o fluxo de entrada em stdout e um arquivo.
Estou tentando fazer algo semelhante com o stdin de um processo. Eu gostaria que o stdin de um comando ainda estivesse anexado ao tty, ou pseudoterminal e também pudesse receber entrada de uma fonte arbitrária, digamos um arquivo.
Eu tentei uma variedade de truques de pipe e redirecionamento de IO e não consigo duplicar o cenário desejado do programa vendo stdin como o terminal.
Isso pode não ser possível, mas pensei em perguntar.
Você poderia escrever um programa que chame
select()
o tty e alguma outra fonte, lendo o que vier de qualquer um deles. Mas se a outra fonte for um arquivo, isso não faz sentido: os arquivos sempre podem ser lidos imediatamente, não há espera para entrada. Portanto, o resultado seria que você manipularia o arquivo primeiro, depois a entrada tty ou o contrário. (A menos que o arquivo seja muito grande e você precise realmente esperar pelo disco por algum tempo mensurável.)Para ler um arquivo primeiro e, em seguida, tty input / stdin, basta usar
cat file -
.Não tenho certeza de como um arquivo está envolvido em seu cenário; a entrada padrão canalizada pode ser lida em um arquivo temporário (ou mantida na memória) e, em seguida, o acesso tty restaurado por meio de algo como
Eu uso esse método para
feed
entrada padrão no REPL e, em seguida, transformo esse REPL em uso interativo: