ein Kapitel zurück                                           ein Kapitel weiter

Mit der Funktion fdopen erzeugen sie praktisch aus einem Filedeskriptor einen FILE-Zeiger....

#include <stdio.h>

FILE *fdopen(int fd, const char *modus);

fdopen ist praktisch das Gegenstück zu fileno aus dem Kapitel zuvor. Als modus wie die Datei geöffnet wird gülten die selben wie bei der Funktion open.

fdopen wird oft auf Filedeskriptoren angewandt die von Funktionen zurückgegeben werden, die Pipes oder Kommunikationskanäle in Netzwerken einrichten. Da kommt daher weil einige Funktionen (open, dup, dup2, fcntl, pipe...) zu Netzwerken nichts mit der Funktion fopen Anfangen können und Filedeskriporen benötigen. Um aber wieder aus solchen Deskriptoren wieder einen Stream (FILE-Zeiger) zu erzeugen benötigen wir fdopen. Hierzu ein kurzes Beispiel......

/*Download:fdopen.c*/
#include <stdio.h> #ifdef _unix_ #include <unistd.h> #else #include <io.h> #endif int main() { FILE *fz, *fz2; int fd,fd2; char datei[255]; printf("Welche Datei wollen sie erzeugen: "); scanf("%s",datei); fz=fopen(datei, "w+"); if(!fz) perror(NULL); fd = fileno(fz); printf("Der Filedeskriptor zur Datei %s lautet %d\n",datei,fd); fd2=dup(fd); printf("Der Filedeskriptor der kopiert wurde %d\n\n",fd2); printf("Wir wollen einen STREAM oeffnen....\n"); fz2 = fdopen(fd2, "w"); if(!fz2) perror(NULL); fprintf(fz,"Dieser Text steht in %s\n",datei); fprintf(fz2,"Dieser Text steht auch in %s\n",datei); fprintf(stdout,"Es wurde etwas in die Datei %s geschrieben",datei); return 0; }

Die beiden Funktionen fileno und fdopen sind jetzt in diesen beiden Kapiteln etwas kurz gekommen, aber wenn wir zu den Pipes und der Netzwerkprogrammierung kommen werden diese sinnvoller eingesetzt.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf