Vorteile der Verwendung benannter Pipes und Sockets anstelle temporärer Dateien

Vorteile der Verwendung benannter Pipes und Sockets anstelle temporärer Dateien

Ich habe zwei zusammenarbeitende Programme. Ein Programm schreibt seine Ausgabe einfach in eine Datei und das andere liest dann aus der Datei und gibt die Daten aus, damit das Front-End damit arbeiten kann.

Ich habe über Named Pipes und Domain Sockets gelesen, kann aber nicht erkennen, welche Vorteile sie gegenüber der Verwendung einer temporären Datei bieten. Für mich scheint es einfach eine formelle Art der Kommunikation zu sein.

Antwort1

  1. Wenn Sie die Zwischendatei nach Abschluss der Verarbeitung speichern müssen, ist die Kommunikation zwischen Prozessen (z. B. über eine Pipe oder einen Socket) nicht besonders wertvoll. Wenn Sie die beiden Programme zu völlig unterschiedlichen Zeiten ausführen müssen, sollten Sie es einfach so tun, wie Sie es jetzt tun.
  2. Als Unix entwickelt wurde, waren die Festplatten noch sehr klein und es kam häufig vor, dass ein eher harmloser Befehl den gesamten freien Speicherplatz eines Dateisystems verbrauchte. Zum Beispiel:

    ein_Befehl_der_ein_Objekt_erzeugtviel_der_Ausgabe| grepeine_sehr_obskure_Zeichenfolge

    erzeugt eine Ausgabe, dievielkleiner als die Größe der Ausgabe des ersten Befehls (d. h. die Größe der Zwischendatei, die erstellt würde, wenn Sie die Befehle so ausführen würden, wie Sie Ihre Programme ausführen).

  3. Daten, die durch Pipes und Sockets fließen, werden (wahrscheinlich) überhaupt nicht auf die Festplatte geschrieben. Daher sind diese IPC-Lösungen möglicherweise

    • effizienter (schneller) als festplattenbasierte Lösungen.
    • sicherer als festplattenbasierte Lösungen, wenn die Zwischendaten sensibler sind als das Endergebnis.

verwandte Informationen