mmm
puoi far si che il soft parta è apra una socket unix... e avvii un fork al quale passa una directory da processare...il fork come prima cosa elenca il tutto...e invia al server una serie di stringhe con l'elenco dei file...fatto questo inizia a processare le directory...come? esegue un ciclo sulle directory nel quale chiede al server principale quanti processi può ancora aprire...fatto questo se ne può aprire almeno uno lancia un fork impostando il nome della directory, se non ne può lanciare nemmeno uno attende un decimo di secondo e riprova (basta un semplicissimo while) e cosi via avanti
fatta la struttura base tutto va da solo ^^
il server quando ha completato di esplorare TUTTE le directory e vede che tutti i processi figli sono morti (quindi tutte le socket cliente sono COMPLETAMENTE chiuse, ovvero nessun fork sta elaborando più sotto directory) chiude il server, prepara i dati che ha ricevuto (ovvero l'array) e scrive su file
se poi la vuoi fare pulita puoi utilizzare XML per gestire l'albero delle cartelle
in questo modo è tutto totalmente asincrono e veloce![]()