[ANSI-C]Datei und Ordner unterscheiden

  • Themenstarter Themenstarter ByeBye 224935
  • Beginndatum Beginndatum
B

ByeBye 224935

hallo zusammen.

Vorweg: Ich habe die Forensuche benutzt.

Ich suche einen Weg, mit ANSI-C herauszufinden ob eine Datei ein Ordner oder ne normale Datei is. Klar. Das geht einfach mit sys/stat.h und sys/types.h . Aber soweit ich weiß gehen dir sys/*.h nicht zum ANSI-C standard.

Weiß da jemand eine Lösung oder endet hier ANSI-C?
 
Die stat() Funktion ist im Kerninghan Ritchie dokumentiert und verwendet <sys/stat.h>

Der Dateityp sollte damit plattformunabhängig zu ermitteln sein.
 
Hi.
Die stat() Funktion ist im Kerninghan Ritchie dokumentiert und verwendet <sys/stat.h>
Meinst du die erste oder zweite Auflage von 1988? Und was möchtest du damit sagen?
Der Dateityp sollte damit plattformunabhängig zu ermitteln sein.
Was heißt für dich denn plattformunabhängig? Manche Betriebssysteme kennen noch nicht mal ein Directory-Konzept, da gibt es dann auch keine entsprechenden Funktionen dafür.

Gruß
 
Meinst du die erste oder zweite Auflage von 1988? Und was möchtest du damit sagen?

Gute Fangfrage. ANSI-C wird erst in der zweiten Ausgabe (also 1988, oder 1990 in deutsch) unterstützt.
Also hier geht es um Ausgabe 2.

Was heißt für dich denn plattformunabhängig? Manche Betriebssysteme kennen noch nicht mal ein Directory-Konzept, da gibt es dann auch keine entsprechenden Funktionen dafür.

Der Kernighan & Ritchie ist das Referenzwerk zu ANSI-C. Alle Compiler die von sich behaupten ANSI-C konform zu sein sollten sich daran halten.

Also UNIX, Windows, DOS und selbst Mikrocontroller mit ANSI-C Compiler gehen. Das hat auch nichts mit einem Betriebssystem zu tun eher mit der zum Compiler gehörenden Laufzeitbibliothek.

Naja, was passiert wenn ein System gar kein Dateisystem unterstützt weiss ich nicht. Sicher ist das man das dann aber auch nicht wirklich braucht ...
Gruß
 
Hi.
Gute Fangfrage. ANSI-C wird erst in der zweiten Ausgabe (also 1988, oder 1990 in deutsch) unterstützt.
Also hier geht es um Ausgabe 2.
Welche allerdings auch vor dem offiziellen ANSI-C Standard von 1989 herausgegeben wurde... Es besteht also durchaus die Möglichkeit, dass noch Änderungen in den Standard eingeflossen sind die nicht im Buch zu finden sind.
Der Kernighan & Ritchie ist das Referenzwerk zu ANSI-C. Alle Compiler die von sich behaupten ANSI-C konform zu sein sollten sich daran halten.
Es mag ein Buch über ANSI-C sein, und sicherlich kann es nicht schaden wenn in dem Buch einige POSIX Funktionen erläutert werden, aber normativ ist das Buch nicht. Der Standard wird nunmal durch den Standard ANSI X3.159-1989 definiert und daran haben sich Compiler Hersteller zu halten - ganz egal was in irgendeinem Buch steht.
Also UNIX, Windows, DOS und selbst Mikrocontroller mit ANSI-C Compiler gehen.
Trotzdem gehöeren die Funktionen nicht zu ANSI C. Oder was wolltest du damit sagen?
Das hat auch nichts mit einem Betriebssystem zu tun eher mit der zum Compiler gehörenden Laufzeitbibliothek.
Wie man bereits am sys Verzeichnisnamen erkennen kann, gehören die stat.h und types.h nicht zum Compiler und auch nicht zu ANSI C. Eine bestimmte C Bibliothek für ein bestimmtes Betriebssystem die POSIX konform ist, sich also (in dem Punkt) an IEEE Std 1003.1 hält, besizt auch die sys/stat.h und die entsprechenden Funktionen.

Gruß
 
Hallo deepthroat

Danke für die ausführlichen Kommentare.

Leider kommen wir nicht auf einen Nenner, solange wir von verschiedenen Dingen reden:

1. POSIX (Portable Operating System Interface)
2. ANSI (American National Standards Institute)

http://de.wikipedia.org/wiki/Varianten_der_Programmiersprache_C

Die Frage - und somit auch meine Antwort bezieht sich auf ANSI-C.

Der Hinweis, das sys/stat.h nicht von ANSI-C gedeckt wird ist richtig :-(
Es handelt sich um Erweiterungen von ANSI-C. Unter Windows, UNIX u.s.w.
werden sie zusammen mit dem Compiler geliefert.

siehe auch:
http://openbook.galileocomputing.de/c_von_a_bis_z/017_c_dateien_verzeichnisse_001.htm

PS: Wenn man Programme POSIX-konform hinbekommt umso besser.
 
Hi.
Leider kommen wir nicht auf einen Nenner, solange wir von verschiedenen Dingen reden:

1. POSIX (Portable Operating System Interface)
2. ANSI (American National Standards Institute)

http://de.wikipedia.org/wiki/Varianten_der_Programmiersprache_C
Irgendwie verstehe ich deine Hinweise nicht. Was willst du mit dem Link sagen? Worauf willst du hinaus?

Das Thema drehte sich nunmal um ANSI-C und die stat Funktionen, die z.B. Teil von POSIX sind.
Die Frage - und somit auch meine Antwort bezieht sich auf ANSI-C.

Der Hinweis, das sys/stat.h nicht von ANSI-C gedeckt wird ist richtig :-(
Es handelt sich um Erweiterungen von ANSI-C. Unter Windows, UNIX u.s.w.
werden sie zusammen mit dem Compiler geliefert.
Das ist nicht richtig. Die Dateien gehören zur C Bibliothek (welche auf Betriebssystemfunktionen aufsetzt). Der Compiler benutzt lediglich die vorhandene C Bibliothek. Und auch unter Windows gibt es mehr als einen Compiler und mehr als eine C Bibliothek!

Gruß
 
Zurück