Blockade innerhalb eines Threads aufheben bei FIFOs



  • Hi,

    habe folgendes Problem und würde mich über einen Tipp von euch freuen.

    Ich lasse zwei Prozesse über FIFOs Daten austauschen.
    Zum Schreiben werden die FIFOs blockierend geöffnet, also in etwa so:

    fifo = open("/tmp/mydamnfifo", O_WRONLY);
    write(fifo, "bla", 3);
    close(fifo);

    open() wartet hier solange bis der andere Prozess die FIFO zum Lesen öffnet, falls noch nicht geschehen. Klappt auch eigentlich alles ganz gut.
    Aber: Wenn hier der lesende Prozess vorher abschmieren sollte, hängt der möchtegernschreibende Thread beim open() fest, was ziemlich blöd wäre.

    Gibt es eine Möglichkeit diese Blockade vielleicht per Signal oder so aufzuheben, ohne den gesamten Prozess oder Thread neu zu starten?
    Die FIFO-Datei aus dem Verzeichnis zu löschen wirkt sich leider nicht auf die Blockade aus.

    Hat jemand eine Idee? Danke schon mal!



  • vielleicht asynchrone E/A ( O_ASYNC )


Anmelden zum Antworten