Lesen mit fgetc von einer Named Pipe
-
Hallo. Hier die Situation.
Ich habe einen schreib-Prozess, der Text aus einer Textdatei liest und in eine named Pipe speichert.
Dann habe ich einen Leseprozess, der den Text aus der Named Pipe lesen soll.Leseprozess
int main (int argc, char *argv[]) { // File descriptor FILE *r_pipe; // Pipe öffnen if ((r_pipe = fopen (argv[1], "r+")) == (FILE *)NULL) { printf ("ERR (Lesen): Fehler beim Öffnen der Pipe\n"); exit (1); } printf("Pipe geöffnet\n"); int ch, i = 0; while((ch = fgetc(r_pipe)) != EOF) { putchar(ch); i++; } fclose (r_pipe); printf("Pipe geschlossen\nEs wurden %d Zeichen gelesen", i); return(0); }
Der Leseprozess bleibt immer in der Zeile while((ch = fgetc(r_pipe))!=EOF) hängen.
Hier ist der Schreibprozess:
int main (int argc, char *argv[]) { // Zeiger auf Datei FILE *fp; // Datei text.txt mit Lesezugriff öffnen if((fp = fopen(argv[2], "r")) == (FILE *)NULL) { printf("ERR (Schreiben): Fehler beim Öffnen der Datei.\n"); exit(1); } printf("Datei geöffnet\n"); // Zeiger auf NAMED PIPE FILE *w_pipe; // PIPE pipeline mit Schreibzugriff öffnen if ((w_pipe = fopen(argv[1], "w+")) == (FILE *)NULL) { printf ("ERR (Schreiben): Fehler beim Öffnen der Pipe.\n"); exit (1); } // Pufferung abschalten setvbuf(w_pipe, NULL, _IONBF, 0); printf("Pipe geöffnet\n"); int ch, i = 0; while((ch = fgetc(fp))!=EOF) { fputc(ch, w_pipe); i++; } // PIPE schließen fclose (w_pipe); printf("Pipe geschlossen\nEs wurden %d Zeichen geschrieben.\n", i); // Datei schließen fclose(fp); printf("Datei geschlossen\n"); return(0); }
Hat hjemand eine Idee, wo mein Fehler liegt?
Vielen Dank