PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit select!!!!



SeCa
31-07-2003, 22:57
Hallo ich blick da nicht ganz durch:
Wenn ich mit select schauen will ob noch daten im fd sind, dann brauch ich den int des fds, wenn ich aber mit fgets eine zeile lesen will, dann brauche ich eine File struktur. Stimmt das?
Wenn ich jetzt mit fdopen aus einem int eine FILE-struct mache und dann lese geht dann der schreib-lese-zeiger des ints auch voran oder bleibt der?
Gibt es ein fgets(int fd), also nicht fgets(File *bla)?
Gibt es bei pipes zu einem anderen Programm irgend etwas zu beachten mit select? Ich habe das gefühl, dass bei mir select anzeigt, dass keine daten vorhanden sind, das lesen mit fgets aber nicht blockiert wird und weitere daten gelesen werden können.
Kann ich von einem filedeskriptor von einer pipe eine FILE-struct machen?

Und überhaupt was soll das mit fd als int und als FILE-struct? Das macht ja keinen Sinn!!!!

Bitte helft mir! Ach ja es handelt sich um C.
Gruss SeCa

SeCa
01-08-2003, 09:27
*push*

anda_skoa
01-08-2003, 09:38
Original geschrieben von SeCa
Wenn ich mit select schauen will ob noch daten im fd sind, dann brauch ich den int des fds, wenn ich aber mit fgets eine zeile lesen will, dann brauche ich eine File struktur. Stimmt das?


Mehr oder weniger, du kannst auch direkt vom Filedescriptor lesen.



Wenn ich jetzt mit fdopen aus einem int eine FILE-struct mache und dann lese geht dann der schreib-lese-zeiger des ints auch voran oder bleibt der?


Der Filedescriptor ist eine ID für eine Datei, mit der Userspace Programm und Kernel kommunizieren.
Ich denke die aktuelle Fileposition wird konsistent sein, egal mit welcher Funktion du liest.
FILE könnte allerdings auch puffern, dann wäre die tatsächliche Fileposition anders als die gelesenen Daten.



Gibt es ein fgets(int fd), also nicht fgets(File *bla)?


Wenns mit f anfängt, ist es für FILE*
Soviel ich weiß gibts für Filedescriptoren nur lowlevel IO Operationen.



Gibt es bei pipes zu einem anderen Programm irgend etwas zu beachten mit select? Ich habe das gefühl, dass bei mir select anzeigt, dass keine daten vorhanden sind, das lesen mit fgets aber nicht blockiert wird und weitere daten gelesen werden können.


Hmm, da muss ich passen.
Eventuell poll statt select probieren.


[
Kann ich von einem filedeskriptor von einer pipe eine FILE-struct machen?


Denke ja, die Art des Files sollte egal sein.



Und überhaupt was soll das mit fd als int und als FILE-struct? Das macht ja keinen Sinn!!!!


Der manpage zufolge ist read/write kein ANSI C, fread/fwrite schon.

read/write ist mehr lowlevel, FILE bietet einen Stream, der auch Status und Flags hat und wahrscheinlich einen Puffer.

Ciao,
_

anda_skoa
01-08-2003, 09:39
Original geschrieben von SeCa
*push*

Das ist wirklich unnötig, soviel Traffic ist hier nicht.

Ciao,
_