Alcune funzioni POSIX o estensioni glibc implementano una passeggiata dell'albero dei file di ampiezza?

StackOverflow https://stackoverflow.com/questions/1647572

Domanda

Sto scrivendo un demone che utilizza inotify per monitorare l'accesso ai file ed è fondamentale che non mi perda nulla in una ricerca ricorsiva. Ho trovato questa idea interessante e ho iniziato a implementare esso.

ftw () e ftw64 () non usano un algoritmo di ampiezza, il suo più "pre-ordine". nftw () mi dà la possibilità di approfondire prima, ma sono preoccupato per le razze nelle foglie superiori.

Spero che mi manchi qualcosa, forse un'estensione GNU? O sto solo cercando di implementare il mio con callback di tipo sicuro (cosa che preferirei davvero non fare)?

Oppure, la mia comprensione dei vantaggi dell'ampiezza prima della profondità prima è errata per questo tipo di applicazione?

È stato utile?

Soluzione

Osservando le specifiche per " nftw () ', il flag FTW_DEPTH esegue un attraversamento post ordine (prima la profondità), visitando le sottodirectory prima di visitare il nodo della directory.

Non credo che nessuno degli algoritmi standard esegua una ricerca approfondita.

Presumibilmente, dovresti scrivere un bfftw () basato sull'interfaccia nftw (). Si noti che è necessario mettere in coda gli elementi da visitare in modo ricorsivo (directory) mentre si esegue la scansione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top