Message Queues mit nicht verwandten prozessen
-
hi erstmal!
Frage ist recht simpel..
Das man Message Queues bei verwandten Prozessen anwendet ist einleuchtend, da der Key immer gleich bleibt, aber
wie kann man Message Queues bei nicht verwandten Prozessen anwenden.
Ich habe gelesen, dass für die Kennung der MQ dieFunktion ;
key_t ftok ( char *pathname, char proj )
BESCHREIBUNG
Die Funktion ftok() wandelt den Pfadnamen einer existierenden und "anfaßbaren" Datei zusammen mit einem Projektbezeichner in einen IPC-Systemschlüssel vom Typ key_t um.benutzen kann.
leider muss ich meine Anwendung aber meinem Lehrer schicken und der wird wohl kaum diesen Pfadnamen auf seinem Rechner haben, den ich in der Funktion benutze,,,
Ausserdem bekomme ich die Fehlermeldung: "File does not exist" sobald ich einen gültigen Pfadnamen eingebe.
Nach aufgabenstellung sollen wir die Kennung im server global deklarieren.
Aber wie meint er das? (Server und nicht verwandter Client kommunizieren über MQ).Kann mir das jemand bitte erklären?
danke gruß AC
-
Du kannst Message Queues afaik auch bei nichtverwandten Prozessen verwenden, muessen jedenfalls nicht unbedingt verwandt sein (fork)
-
da client und server auf dem gleichen rechner vorhanden sein müssen, kannst du eines der beiden programme als pfad angeben. eine lösung ist, davon auszugehen, dass der server im gleichen verzeichnis liegt wie der client. du musst dann ftok in beiden programmen genau gleich aufrufen. eine allgemein gültige lösung gibt es hier leider nicht.
argv[0], dirname(3) und snprintf werden dir dabei helfen.