Rekursives Verzeichniss kopieren
-
Seit kurzem probiere ich einen Ordner inklusive aller Unterordner und enthaltenen Dateien an ein angegebens Verzeichniss meiner Wahl zu kopieren.
(Ziel ist es also meinen eigenen copy Befehl unter c zu schreiben OHNE den vorhandenen von Unix zu benutzen)
Dabei verwende ich c unter unix und NICHT c++ .Bislang läuft es noch nicht so wie geplant, hat vielleicht jemand eine Anregung oder einen Beispiel Quellcode für mich ??
Wäre über jede Hilfe SEHR dankbar.
Vielen Dank im Voraus und mit freundlichen Grüßen
Sunny
-
Am besten du hältst dich ans Orginal -> http://www.gnu.org/software/coreutils/ das ist in C und soweit ich weiss auch rekrusiv nur ein wenig lang ist der Code
Ansonsten kannst du natürlich auch erst mal das posten was du schon hast und was nicht so richtig läuft, vielleicht kann man ja was draus machen
Joe
-
Guck Dir mal die Funktion unten an, die macht nichts anderes als rekursiv alle Unterverzeichnisse durchzumaschieren und dabei aufzupassen das es nicht einen Link folgt und somit ganz woanders landet als ursprünglich.
void baum_abstieg(char *pfad) { DIR *dir,*test_dir; struct dirent *dir_info; struct stat attribut; char isdir[MAXLAEN]; char islink[MAXLAEN]; if(chdir(pfad)!=-1) { dir=opendir(pfad); while((dir_info=readdir(dir))!= NULL) { if(stat(dir_info->d_name,&attribut)!=-1 && strcmp(dir_info->d_name,"..")!=0 && strcmp(dir_info->d_name,".")!=0) if((attribut.st_mode & S_IFDIR) && readlink(dir_info->d_name,islink,MAXLAEN)==-1) { if((test_dir=opendir(dir_info->d_name))!=NULL) { closedir(test_dir); getcwd(isdir,MAXLAEN); if(strcmp(pfad,"/")!=0) strcat(isdir,"/"); strcat(isdir,dir_info->d_name); if(in_list(isdir)!=0) { fprintf(stderr,"Fehler beim einfügen von %s in Liste\n",isdir); exit(1); } baum_abstieg(isdir); } } } /* end while */ closedir(dir); chdir(".."); } }
-
Hi,
kleiner FAQ-Artikel
Bewegen in Verzeichnissen unter Unixhier eine sehr schoene Loesung von Hume, in C++:
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=dirlist#Answmfg
v R
-
Hi Leute
Danke für die Hilfen,
Programm läuft nun einwandfrei.Gruß
Sunny