Moins!
Hat jemand hier extensiv mit pipes rumgemacht?
Folgendes Problem (?):
Ich muß zwischen einigen Prozessen strukturierte Daten austauschen und
wüßte gern, ob es dafür eine "übliche" Vorgehensweise über pipes gibt.
Mein Gedanke war, daß man erst eine Art ID in die pipe steckt, die
bestimmt, was für Daten kommen werden, danach eine Längenangabe und
erst dann die Daten.
Hintergrund: Ein Prozess sammelt Daten und soll diese an einen zweiten
Prozess, der die eintütet und ins Netz pumpt, übergeben. Die Daten an
sich werden bereits vom ersten Prozess serialisiert/linearisiert, aber
der zweite Prozess muß trotzdem wissen, was das für Daten sind, obwohl
ihm der Inhalt egal ist. Auf der anderen Seite des Netzes soll das Ganze
dann umgekehrt passieren. Warum das jeweils separate Prozesse sein
müssen, kann ich jetzt nicht erklären, das ist etwas zu komplex, es ist
jedenfalls zwingend so.
Beipiel (stark vereinfacht und völlig aus der Luft gegriffen):
Der Datenserverprozess (wenn wir ihn mal so nennen wollen) will ein
Datum (Singular von Daten, nicht Zeit) vom Typ
struct {int a; float b; char c[42];}
versenden.
Etwas später sollen es X Instanzen von
struct{int a; int b; float c;}
sein, wobei X variabel ist.
usw.
Wie gesagt sind es ca. 10 solcher strukturierter Datentypen, die in
variabler Anzahl (aber dann immer "am Stück") versendet werden sollen.
Ist dieses
WRITEPIPE(id);
WRITEPIPE(length);
WRITEPIPE(data); /* data = BLOB */
doof? Wie würdet Ihr das lösen?
Hat überhaupt jemand kapiert, was ich mit diesem konfusen Text fragen
will?
Gruß,
Eric
--
Eigentlich sollten Konjunktive prinzipiell meistens vermeidbar sein.
- Rainer Kersten in <dasr>