|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 304
|
[Risolto] [C] Cancellare una directory piena
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) Codice:
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");
Ultima modifica di Eddie1985 : 15-12-2011 alle 09:10. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 304
|
nessuno sa indicarmi una soluzione?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2011
Messaggi: 381
|
Ciao, dato che sei sotto Unix una soluzione efficace ma poco efficiente potrebbe essere:
.... system("/bin/rm -fr nomedirectory"); ....
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 304
|
beh si scusami, intendevo senza fare ricorso ad una chiamata di sistema
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2011
Messaggi: 381
|
ok, il discorso è semplice, devi concatenare anche il nome della directory per cancellare il file, altrimenti non lo trova.
quindi qualcosa del tipo Codice:
... strcpy (str,"nome-directory"); strcat (str,"/"); strcat (str,entry->d_name); unlink (str); ... 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.
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 304
|
ok mi pare che così funzioni. Thanks
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:05.



















