Inter-Prozess-Kommunikation ohne FIFOs

Innerhalb eines BASH-Skript haben, können wir mehrere Prozesse im hintergrund, die miteinander kommunizieren über named pipes, FIFOs eingetragen in das Dateisystem. Ein Beispiel HIERFÜR könnte sein:

#!/bin/bash
mkfifo FIFO

# BG process 1
while :; do echo x; done & >FIFO

# BG process 2
while :; do read; done & <FIFO

exit

Frage ich mich, ob es möglich ist, das gleiche zu tun Informationsaustausches zwischen hintergrund-Prozesse, die von einem Skript ohne Verwendung einer FIFO-Dateisystem auf, vielleicht mit irgendeiner Art von Datei-Deskriptor Umleitung.

Sie können mktemp zu kommen mit einem einzigartigen Namen
Ich würde es vorziehen, nicht zu haben, um zu verwalten, das Dateisystem überhaupt. Auch für ein schnelles erstellen/löschen von Dateien oder FIFOs, das Dateisystem Interaktion sinkt die Leistung.
Leider bourne-shell nicht sehr flexible Handhabung dieser Dinge. IPC ist auf jeden Fall möglich, ohne FIFOs obwohl, da Sie noch ziemlich frisch: die zugrunde liegenden Anrufe socketpair/Rohr.
Das klingt interessant. Könnten Sie mir eine doc-Referenz oder einen sehr-kurzen Beispiel?
Sorry, Müll Wortlaut dort. Was ich damit sagen wollte: FIFOs sind die jüngsten, so dass IPC ist klar ohne Sie möglich. Wenn Sie nicht mit FIFOs, die zugrunde liegenden Anrufe werden auf socketpair (oder Rohr). Bash hat eine Menge lustige Einschränkungen der Datei-Deskriptoren, so ist es meist besser, den moment diese Probleme auftauchen, gerade zu gehen, um so etwas wie python oder (meine Vorliebe) einen C-wrapper, der die Anrufe, die Sie erreichen wollen, direkt.

InformationsquelleAutor davide | 2012-06-02

Schreibe einen Kommentar