Dateien öffnen mit fdopen und fileno
-
hallo leute,
ich versuche gerade eine datei mittels eines filedeskriptors (fd) zu lesen (read), was soweit auch klappt. es klappt selbst noch, wenn ich die datei mit fdopen öffne und dann mittels fgets eine zeile auslesen. wenn ich jetzt aber wieder über den fd auf die datei zugreifen will, ließt read gar nix mehr ein... auch nicht wenn ich den fd mit fileno(fp) erneuere. was genau passiert da und warum lässt sich der fd jetzt nicht mehr verwenden?? und welchen zugriff auf die datei muss ich dann am ende schließen?
vielen dank euch schonmal im voraus
-
Ist das ANSI-C???
-
Zeh Mau schrieb:
Ist das ANSI-C???
also fopen und fgets schon - hast du nen besseren vorschlag wo ich das posten sollte... ?
-
Jetzt noch dein Code, bitte....
-
omega3 schrieb:
Zeh Mau schrieb:
Ist das ANSI-C???
also fopen und fgets schon - hast du nen besseren vorschlag wo ich das posten sollte... ?
die FILE* Funktionen schon, die File-Deskriptor Funktionen nicht. Und ich würde anstelle von read() vermutlich fread() verwenden, damit ersparst du dir die Um"rechnung" in File Deskritoren - und Kompatiblitätsprobleme.
-
die funktion zum lesen kommt nachher aber in eine dll und MUSS mit filedeskriptoren arbeiten.
aber nochmal zum problem: wenn ich eine datei (egal wie) zum ersten mal öffne klappt das lesen einwandfrei, wenn ich jetzt aber den filedeskriptor oder den stream zur bereits geöffneten datei hole (also fileno oder fdopen), dann funktioniert nur noch der stream (FILE*). im klartext also, fileno ist bei mir nutzlos, weil man dann ja wieder 2 zugriffe hat (es wird einfach nix über den fd eingelesen). die einzige möglichkeit überhaupt mit den filedeskriptoren zu arbeiten ist, ganz ohne die streams auszukommen. allerdings war das meine überlegung: da die funktion in der dll nur fd's als parameter nehmen kann, diese dann per fdopen in einen stream umwandeln und dann mit den FILE* funktionen darauf zugreifen... naja geht ja wohl jetzt nicht. meine absicht mit diesem thread war aber auch eher in erfahrung zu bringen, warum der fd dann "tot" ist. ich weiß zwar sehr wohl, dass das platformspezifisch und nicht ANSI-C ist aber hätte ja trotzdem sein können, jemand hatte solche probleme auch schonmal...
:xmas1: