-
le pipe non memorizzano i dati su disco. /bin/echo pippo | grep bar non crea alcun file. prova
strace -f sh -c '/bin/echo foo | grep bar'per vedere tutte le chiamate di sistema effettuate da una shell durante l'esecuzione di una pipeline.echoè un built-in della shell, quindi ho suggerito/bin/echoper fare in modo che la shell esegua un eseguibile. -
/tmpnon deve essere su disco. Può essere montato su tmpfs (ovvero supportato da memoria virtuale). Nota che un riavvio svuoterà/tmpin tal caso, usa/var/tmpper qualsiasi cosa tu voglia lasciare in giro.
Se quello che stai facendo è inserire dati in un file, allora non sta usando una pipe. Se il file è un fifo, non un file normale, allora è solo un rendezvous con nome e non contiene dati. Usa ls -l per scoprirlo.
E nota che se speri di impedire agli utenti di vedere cosa sta succedendo attraverso le pipe nei processi di loro proprietà, sei praticamente SOL, perché strace può ispezionare tutto ciò che fa un processo che interagisce con qualsiasi cosa al di fuori del processo, ad eccezione della lettura/scrittura della memoria condivisa mappata. ltrace è ancora più invasivo. Se il tuo programma verrà eseguito su sistemi in cui l'utente locale ha root, non puoi fermarli affatto. Su Unix, root può fare qualsiasi cosa e dispone di potenti strumenti per questo scopo.