-
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/echo
para fazer o shell rodar um executável. -
/tmp
não precisa estar no disco. Pode ser montado em tmpfs (isto é, suportado pela memória virtual). Note que uma reinicialização irá esvaziar/tmp
nesse caso, então use/var/tmp
para 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.