трубы не хранят данные на диске. / bin / echo foo | grep bar не создает файлов. попытаться
strace -f sh -c '/bin/echo foo | grep bar'
увидеть все системные вызовы, сделанные оболочкой при запуске конвейера.echo
это встроенная оболочка, поэтому я предложил/bin/echo
сделать ее исполняемой./tmp
не должно быть на диске. Он может быть смонтирован на tmpfs (т.е. поддерживается виртуальной памятью). Обратите внимание, что/tmp
в этом случае перезагрузка будет пустой, поэтому используйте/var/tmp
все, что вы хотите оставить.
Если то, что вы делаете, это помещает данные в файл, тогда он не использует канал. Если файл представляет собой fifo, а не обычный файл, то это просто именованное рандеву и не содержит данных. Используйте ls -l, чтобы узнать.
И обратите внимание, что если вы хотите помешать пользователям видеть, что происходит по каналам в процессах, которыми они владеют, вы в значительной степени SOL, потому что strace
можете проверять все, что делает процесс, взаимодействующий с чем-либо вне процесса, кроме чтения / записи mmapped shared объем памяти. ltrace
еще более агрессивен. Если ваша программа будет работать в системах, где у локального пользователя есть root, вы вообще не сможете их остановить. В Unix root может делать все что угодно и имеет для этого мощные инструменты.