2015-08-13 10 views
5

Idealmente, voglio avere una directory che non è visibile nel filesystem e che verrà automaticamente rimossa quando l'ultimo descrittore di file aperto verrà chiuso. E 'il contenuto sarebbe solo accessibile attraverso openat(), fstatat(), eccEsiste un equivalente di O_TMPFILE per le directory?

Per i file regolari, questo comportamento si ottiene dando la bandiera O_TMPFILE a open(). Tuttavia, mkdir() non ha un parametro flags.

Supponendo di avere l'ultimo kernel Linux disponibile, è possibile?

+0

possibile duplicato di [Cos'è una funzione POSIX per creare una directory temporanea in modo sicuro?] (Http://stackoverflow.com/questions/12573920/whats-a-posix-function-for-creating-a-temporary-directory- sicuro) –

+0

Non penso che questo sia un duplicato. Questa domanda riguarda Linux e richiede una variante basata su directory di una caratteristica specifica di Linux; lo pseudo-duplicato riguarda metodi conformi agli standard per creare directory temporali. –

+0

Paul: Non proprio ... 'mkdtemp()' è quello che uso in questo momento, ma è visibile ad altri utenti e processi e deve ancora essere rimosso manualmente. – Benno

risposta

2

Non sono a conoscenza di alcun modo per farlo e non mi aspetto che sia possibile. A differenza dei file, che possono avere zero o più nomi di percorso (a causa di collegamenti rigidi e file non collegati), le directory hanno esattamente un percorso e probabilmente interromperà l'utilizzo di applicazioni valide se il sistema operativo non soddisfa questa aspettativa.

+0

Si noti che l'ipotesi "le directory hanno esattamente un percorso" non è universalmente vera e fare affidamento su di essa è pericolosa. Alcuni sistemi supportano collegamenti fissi nelle directory. Altri sistemi (come Linux) consentono di montare lo stesso file system due volte su due percorsi diversi, offrendo due percorsi senza link simbolici alla stessa directory. – fuz

Problemi correlati