Hallo Zusammen, ich suche ein gutes Tutorial zu Posix messages queues. Dabei bin ich auch https://www.uninformativ.de/blog/postings/2016-05-16/0/POSTING-de.html und auf http://openbook.rheinwerk-verlag.de/linux_unix_programmierung/Kap09-005.htm#RxxKap09005040002D81F03B100 gestoßen. Beide unterscheiden sich aber. So verwendet das erste Beispiel ganz andere header wie mqueue.h und das andere msg.h. Aber welches Beispiel ist sinnvoller bzw. besser? Bin da etwas verwirrt.
Pascal schrieb: > Hallo Zusammen, > ich suche ein gutes Tutorial zu Posix messages queues. > > Dabei bin ich auch > https://www.uninformativ.de/blog/postings/2016-05-16/0/POSTING-de.html > und auf > http://openbook.rheinwerk-verlag.de/linux_unix_programmierung/Kap09-005.htm#RxxKap09005040002D81F03B100 > gestoßen. > > Beide unterscheiden sich aber. So verwendet das erste Beispiel ganz > andere header wie mqueue.h und das andere msg.h. Aber welches Beispiel > ist sinnvoller bzw. besser? Bin da etwas verwirrt. Sie unterscheiden sich, weil es zwei unterschiedliche Arten von Message-Queues sind: a) Posix_Message_Queues, optional, sind unter der Option _POSIX_MESSAGE_PASSING verfügbar b) XSI-Message-Queues (ehem. SysV-Message-Queues), optional, unter der Option _XOPEN_UNIX Sie stammen historisch aus unterschiedlichen Strömungen und haben deswegen auch eine andere Schnittstelle. Zudem haben sie auch unterschiedliche Eigenschaften, das kommt jetzt drauf an, was man will ...
Pascal schrieb: > Hallo Zusammen, > ich suche ein gutes Tutorial zu Posix messages queues. Immer ins "Original" schauen, also entweder - APUE - TLPI
Vielen Dank vorab. Ich habe folgendes Beispiel ausprobiert: https://www.uninformativ.de/blog/postings/2016-05-16/0/POSTING-de.html Die Frage ist jetzt, wie ich als Empfänger (entspricht Server?!) eine Schleife einbaue, um den nachrichtenfluss zu überwachen und neue Nachrichten gleich abzurufen? Eine Endlosschleife bringt mit nichts, weil ich eigentlich beim Start aus der Konsole "./recv /queuename ..." den Queuenamen angeben muss. Hat da jemand eine Idee? Bin hierbei leider unerfahren ...
Das verlinkte Tutorial ist sehr kompakt und bietet lediglich die Möglichkeit, als Sender (Client) eine "Queue" zu erstellen und eine Nachricht abzulegen. Mit dem Code des Empfängers (Server) kann durch Angabe des "Queue-namens" als Parameter die Nachricht abgerufen werden. Gerne möchte ich das Ganze mit einer Schleife automatisieren, dass sozusagen neue Nachrichten in einer Queue oder Nachrichten von neuen Queues abgerufen werden. Gibt es da sinnvolle beispiele?
Pascal schrieb: > Das verlinkte Tutorial ist sehr kompakt und bietet lediglich die > Möglichkeit, als Sender (Client) eine "Queue" zu erstellen und eine > Nachricht abzulegen. Mit dem Code des Empfängers (Server) kann durch > Angabe des "Queue-namens" als Parameter die Nachricht abgerufen werden. > > Gerne möchte ich das Ganze mit einer Schleife automatisieren, dass > sozusagen neue Nachrichten in einer Queue dann mach das doch > oder Nachrichten von neuen > Queues abgerufen werden. Das Iterieren über mehrere PosixMQs nicht mit select()/poll() machbar, da es sich bei den mqd_t nicht um Dateideskriptoren handelt. Am einfachsten mit mehreren Aktivitätsträgern. > Gibt es da sinnvolle beispiele? Siehe Literaturangabe oben.
Ich habe das jetzt so gehandhabt, dass ich auf die Eingabe eines exit-Strings der Clients warte und dann den Server einfach anhalte bzw. die while-Schleife abbreche.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.