las tuberías no almacenan datos en el disco. / bin / echo foo | grep bar no crea ningún archivo. intente strace -f sh -c '/bin/echo foo | grep bar'
ver todas las llamadas al sistema realizadas por un shell al ejecutar una canalización. echo
es un shell incorporado, por lo que sugerí /bin/echo
hacer que el shell ejecute un ejecutable.
/tmp
no tiene que estar en el disco. Se puede montar en tmpfs (es decir, respaldado por memoria virtual). Tenga en cuenta que un reinicio se vaciará /tmp
en ese caso, así que úselo /var/tmp
para cualquier cosa que desee dejar.
Si lo que está haciendo es poner datos en un archivo, entonces no está usando una tubería. Si el archivo es un Fifo, no un archivo normal, entonces es solo una cita con nombre y no contiene datos. Use ls -l para averiguarlo.
Y tenga en cuenta que si espera evitar que los usuarios vean lo que pasa a través de las tuberías en los procesos que poseen, es prácticamente SOL, porque strace
puede inspeccionar todo lo que hace un proceso que interactúa con cualquier cosa fuera del proceso, excepto leer / escribir mmapped shared memoria. ltrace
Es aún más invasivo. Si su programa se ejecutará en sistemas donde el usuario local tiene root, no puede detenerlos en absoluto. En Unix, root puede hacer cualquier cosa y tiene herramientas poderosas para este propósito.
sender > filename
entoncesreceiver < filename
. Verificaría el archivo tmp durante ambas operaciones, para ver si el remitente o el receptor lo están haciendo.mkfifo
tubería creada nunca crea ningún almacenamiento intermedio (¡en absoluto!) Y nunca crea archivos.