PDA

View Full Version : [C] Cancellare una directory piena


Eddie1985
11-12-2011, 17:07
Salve a tutti
Vorrei sapere come si fa a cancellare una directory piena in un programma scritto in C; vi scrivo come avrei pensato di fare (ma ovviamente questa soluzione non funziona): (PS il programma deve girare sotto un sistema operativo UNIX like)

DIR *dp;
struct dirent *ep;

dp = opendir ("nome-directory");
if (dp != NULL) {
while (ep = readdir (dp))
unlink (ep -> d_name);
(void) closedir(dp);
}
else
perror ("ERRORE");

Grazie

Eddie1985
12-12-2011, 20:40
nessuno sa indicarmi una soluzione?

starfred
13-12-2011, 08:06
Ciao, dato che sei sotto Unix una soluzione efficace ma poco efficiente potrebbe essere:

....
system("/bin/rm -fr nomedirectory");
....

Eddie1985
13-12-2011, 09:00
beh si scusami, intendevo senza fare ricorso ad una chiamata di sistema :)

starfred
13-12-2011, 18:32
ok, il discorso è semplice, devi concatenare anche il nome della directory per cancellare il file, altrimenti non lo trova.

quindi qualcosa del tipo
...
strcpy (str,"nome-directory");
strcat (str,"/");
strcat (str,entry->d_name);
unlink (str);
...

ATTENZIONE:

Quando esegui la readdir ricordati che compaiono anche i "file" "." e ".."; sinceramente non conosco l'effetto della chiamata unlink("..") però credo sia bene escluderla onde evitare cancellazioni indesiderate.

Eddie1985
15-12-2011, 08:10
ok mi pare che così funzioni. Thanks :)