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