Universität Ulm - Abteilung Angewandte Informationsverarbeitung
11.Übungsblatt (23.01.01 bis 30.01.01)
zur Vorlesung Allgemeine Informatik III (WS 00/01)
Erweitern Sie das Programm copy.c
aus der Vorlesung, das eine Quelldatei in eine Zieldatei 1:1 kopiert.
Aufgabe 1 (10 Punkte)
Falls die Zieldatei bereits existiert, soll beim Benutzer nachgefragt werden, ob sie überschrieben werden soll oder nicht. Falls beim Aufruf die Flagge -f angegeben ist und die Datei existiert, wird ohne Nachfragen überschrieben:
thales$ ls -l kopie copy
-rwxrwxr-x 1 grabert sai
8156 Jan 22 19:02 copy
-rw-rw-r-- 1 grabert sai
0 Jan 22 19:08 kopie
thales$ copy copy kopie
Zieldatei 'kopie' existiert bereits. Ueberschreiben j/n j
thales$ copy -f copy kopie
thales$
Aufgabe 2 (10 Punkte)
Ändern Sie das Programm so, dass die Zieldatei immer die identischen Dateirechte besitzt, wie die Quelle:
thales$ ls -l kopie copy
-rwxrwxr-x 1 grabert sai
8156 Jan 22 19:02 copy
-rw-rw-r-- 1 grabert sai
0 Jan 22 19:08 kopie
thales$ copy -f copy kopie
thales$ ls -l kopie
-rwxrwxr-x 1 grabert sai
8156 Jan 22 19:10 kopie
Dazu brauchen Sie möglicherweise zwei weitere C-Funktionen:
- int umask(int cmask) setzt die Umask für zu erzeugende
Dateien neu -- und zwar auf den via cmask angegebenen Wert
- int unlink(char *path) löscht die durch path
angegebene Datei (so wie "rm" auf der Shell)