Fehlercodes bei Dateizugriff/Lesen/Schreiben in C

neuesich

Mitglied
Hallo,

Ich habe mich gefragt, ob es in C mit "Hausmitteln" möglich ist bestimmte Fehlerfälle beim Öffnen/Lesen/Schreiben von Dateien zu unterscheiden.
Ich meine so etwas wie:

1) Öffnen: Datei nicht vorhanden/Keine (Zugriffs-)Rechte
2) Lesen: Keine (Lese-)Rechte/ Wird von anderen Prozess genutzt
3) Schreiben: Datei nicht (mehr) vorhanden (Netzwerklaufwerk/USB-Verbindung unterbrochen etc). / Keine (Schreib-)Rechte bzw. schreibgeschützt / Kein Speicherplatz mehr zur Verfügung / Speicherpfad nicht mehr vorhanden

usw usw.

z.B. Gibt fopen (so weit ich weiß) beim fehlgeschlagenen Öffnen einer Datei nur einen Pointer auf NULL zurück, oder gibt es andere Möglichkeiten?

Ich bedanke mich im Voraus!
Lg
 
Danke für den Tipp, aber so weit ich das sehen kann wird nur unterschieden zwischen geglücktem Öffnen und fehlgeschlagenem Öffnen.

Code:
exit(EXIT_FAILURE);
hilft mir nicht weiter. Wird zwar nicht auf der Seite erklärt, aber wenn ich das richtig gegoogelt habe, dann schließt das ja das komplette Programm (was ich nicht beabsichtige).

Der letzte Teil der Seite ist interessant. freopen werde ich wohl nicht brauchen, aber anscheinend sind auftretende Fehler im Stream stderr hinterlegt. Wie kann ich am besten darauf zugreifen? Die Ausgabe von stderr zeigt sicherlich nur einen englischen Text, oder? Ist es möglich eine Art Fehlercode zu erhalten?

lg
 
Und stderr gibt jetzt nicht automatisch Fehlermeldungen aus, das ist dasselbe wie stdout, nur ist es für Fehlermeldungen gedacht, die du als Programmierer ausgeben möchtest. Automatisch vom System bekommst du keine Fehlerausgabe. Für solche Fälle gibt es, wie von sheel schon gesagt, errno.
Lg
 
Hi.

Und einen entsprechenden Fehlertext kannst du mit perror ausgeben lassen. Oder du nutzt strerror um die Fehlermeldung in einen String zu kopieren.

Gruß
 

Neue Beiträge

Zurück