-
Os pipes
-
não armazenam dados no disco. / bin / echo foo | A barra grep não cria nenhum arquivo. tente
strace -f sh -c '/bin/echo foo | grep bar'para ver todas as chamadas do sistema feitas por um shell ao executar um pipeline.echoé um shell embutido, então eu sugeri/bin/echopara fazer o shell rodar um executável. -
/tmpnão precisa estar no disco. Pode ser montado em tmpfs (isto é, suportado pela memória virtual). Note que uma reinicialização irá esvaziar/tmpnesse caso, então use/var/tmppara qualquer coisa que você queira deixar.
Se o que você está fazendo é colocar dados em um arquivo, não está usando um canal. Se o arquivo é um fifo, não um arquivo normal, então é apenas um encontro nomeado e não contém dados. Use ls -l para descobrir.
E observe que, se você quiser impedir que os usuários vejam o que está passando por canais nos processos que possuem, você é praticamente SOL, porque strace pode inspecionar tudo que um processo interage com qualquer coisa fora do processo, exceto para leitura / gravação de memória compartilhada em mmap. ltrace é ainda mais invasivo. Se o seu programa for executado em sistemas nos quais o usuário local tenha raiz, você não poderá pará-lo. No Unix, o root pode fazer qualquer coisa e possui ferramentas poderosas para o propósito.