-
les canaux ne stockent pas les données sur le disque. /bin/echo truc | grep bar ne crée aucun fichier. essayez
strace -f sh -c '/bin/echo foo | grep bar'
pour voir tous les appels système effectués par un shell lors de l'exécution d'un pipeline.echo
est un shell intégré, j'ai donc suggéré/bin/echo
pour que le shell lance un exécutable. -
/tmp
n'a pas besoin d'être sur disque. Il peut être monté sur tmpfs (c'est-à-dire soutenu par de la mémoire virtuelle). Notez qu'un redémarrage videra/tmp
dans ce cas, utilisez donc/var/tmp
pour tout ce que vous voulez laisser autour.
Si ce que vous faites consiste à mettre des données dans un fichier, il n'utilise pas de canal. Si le fichier est un fichier fifo, pas un fichier normal, il s'agit simplement d'un rendez-vous nommé et ne contient pas de données. Utilisez ls -l pour le savoir.
Et notez que si vous espérez empêcher les utilisateurs de voir ce qui se passe dans les canaux des processus qu'ils possèdent, vous êtes à peu près SOL, car strace
peut inspecter tout ce qu'un processus fait qui interagit avec quoi que ce soit en dehors du processus, à l'exception de la lecture/écriture de la mémoire partagée mmappée. ltrace
est encore plus envahissant. Si votre programme s'exécute sur des systèmes où l'utilisateur local est root, vous ne pouvez pas du tout les arrêter. Sous Unix, root peut tout faire et dispose d'outils puissants à cette fin.