Thread Entkoppelung zweier Prozesse mittels FIFO (6 answers)
Opened by fibbs at 2008-07-01 11:55

betterworld
 2008-07-02 20:48
#111745 #111745
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Wie esskar schon sagt, es liegt an dem while(1). Die innere while-Schleife wird beendet, sobald ein EOF vom FIFO kommt. Nach einem EOF kann man nicht mehr lesen, daher wird darauf die innere Schleifenbedingung immer sofort EOF zurueckgeben.

Wenn Du ein EOF kriegst und wieder lesen moechtest, solltest Du wohl den FIFO neu oeffnen.

Das EOF kommt uebrigens, sobald der Client das Socket schliesst:
Code: (dl )
close (FIFOFD);


Übrigens kann man auch nach print und <> Fehler aus $! auslesen. Das ist zur Fehlersuche ganz hilfreich, auch wenn es hier wohl nicht hilft, da EOF kein wirklicher Fehler ist.

Und den Signal-Handler verstehe ich auch nicht so ganz. Warum setzt Du darin die Signal-Handler noch einmal neu? Das ist erstens nicht notwendig, da sie so lange gesetzt bleiben, bis sie explizit deaktiviert werden. Und zweitens bringt es ja eh nichts mehr, so kurz vor dem exit...

Ich mag nicht mit FIFOs programmieren. Da blockt und EOFt es an allen Enden, und nie macht es das, was man will. Warum nicht einfach ein Socket nehmen? @FIFO: Nichts gegen Dich ;)

View full thread Entkoppelung zweier Prozesse mittels FIFO