Um pipe sem nome é, por natureza, privado para os aplicativos que possuem o descritor de arquivo. Não há nenhuma maneira de observar ou modificar o tráfego no pipe. Eu não acho que há uma maneira de olhar para o pipe diretamente no Linux, também.
Existe uma maneira sem princípio de fazer mais ou menos o que você procura depois: através da chamada de sistema ptrace . Você não estaria alinhado no tubo, mas em um dos processos. Para observação, use strace , por exemplo
strace -p1234 -s99999 -e write
em que 1234
é o ID do processo de um processo que escreve no pipe. Modificar os dados é mais difícil, mas pode ser feito. Acho que a maneira mais fácil seria primeiro configurar um processo intermediário que copia sua entrada padrão para sua saída padrão, além dos dados que você deseja injetar (e menos os dados que deseja suprimir). Crie dois pipes nomeados e inicie esse processo intermediário com stdin em um canal e stdout no outro. Em seguida, use um depurador (por exemplo, GDB ) para que ambos os processos de destino executem open
no canal nomeado apropriado e, em seguida, dup
para colocar o pipe no descritor de arquivo apropriado. Note que há uma chance de você falhar em um dos processos no processo.
(Se você não entende o último parágrafo, me desculpe, mas isso requer um certo nível de tecnicidade. Eu não acho que haja uma maneira mais fácil.)