Subject: Juli 2009 2b
Hi,
mal die Aufgabe 2b aus der Klausur vom Juli 2009 durchgearbeitet.
Wär nett wenn jemand meine Lösung mal überprüft.
Vor allem bei dem Warten auf ein Signal vom Kindprozess bin ich mir noch unsicher.
Danke
lg Dani =)
mal die Aufgabe 2b aus der Klausur vom Juli 2009 durchgearbeitet.
Wär nett wenn jemand meine Lösung mal überprüft.
Vor allem bei dem Warten auf ein Signal vom Kindprozess bin ich mir noch unsicher.
Danke
lg Dani =)
- #include <stdio.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <errno.h>
- #include <sys/types.h>
- #include <dirent.h>
- int main(int argc, char *argv[]) {
- DIR *dirp;
- struct dirent *entry;
- dirp = Opendir(".");//Zeiger dirp kriegt die Adresse vom aktuellen Verzeichnis
- if(dirp == NULL){ // Fehlerabfrage
- perror("opendir");
- exit(EXIT_FAILURE);
- }
- while (errno=0, (entry = readdir(dirp))!=NULL){ //entry zeigt auf die nächste Datei in dirp
- pid_t pid;
- pid = fork(); //erzeugt Kind-Prozess und speichert dessen ID in pid
- if (pid == -1) { //Fehlerabfrage
- perror("fork failed");
- exit(EXIT_FAILURE);
- }
- else if (pid == 0) { //im Kindprozess
- if(entry-->d_name[0] != '.') // Verzeichnis mit . ausschließen
- {
- execl("/usr/bin/backup/", entry-->d_name); //Backup wird mit name der Datei gestartet
- }
- exit(); //beenden vom Kindprozess
- }
- else { //im Vaterprozess
- sigsuspend(); // warten auf den Kind Prozess
- }
- }
- if (errno != 0){ //bei veränderung von errno Fehlerbahandlung
- perror("readdir");
- exit(EXIT_FAILURE);
- }
- if(closedir(dirp)==-1){// Schließt das Verzeichnis und macht bei Rückgabewert -1Fehlerbehandlung
- perror("closedir");
- exit(EXIT_FAILURE);
- }
- }
Show profile
Link to this post