next up previous contents
Next: Polecenie ipcs Up: Podstawy Previous: Identyfikatory IPC   Contents

Klucze IPC

Aby otrzymać unikalne ID musimy posłużyć się kluczem. Klucz musi zostać uzgodniony przez procesy klienta i serwera. Jest to pierwszy krok przy tworzeniu aplikacji klient/serwer.

Kiedy używasz telefonu: aby dodzwonić się do kogoś musisz znać jego numer. Dodatkowo, operator telefoniczny musi wiedzieć w jaki sposób połączyć ciebie. Kiedy ta osoba odbiera tworzone jest połączenie.

W wypadku IPC Systemu V 'telefon' odpowiada bezpośrednio typowi używanego obiektu. 'Operator telefoniczny', lub metoda połączenia może być przyporządkowana kluczowi IPC.

Klucz może być za każdym razem ten sam, zakodowany w aplikacji. Jednak ma to swoją wadę - istnieje możliwość, iż jest on już używany. Często korzysta się z funkcji ftok() w celu utworzenia wartości klucza, który ma być użyty przez klienta i serwer.


     FUNKCJA Z BIBLIOTEKI: ftok();
   
     PROTOTYP: key_t ftok ( char *ścieżka, char proj );
       ZWRACA: nową wartość klucza IPC jeżeli sukces
                -1 - błąd, wartość errno odpowiada wywołaniu stat()
   

Zwracaną wartością jest klucz utworzony na podstawie kombinacji numeru i-węzła i podrzędnego numeru urządzenia z pliku podanego w pierwszym argumencie wraz z identyfikatorem projektu podanym jako drugi argument. To nie gwarantuje unikalności, jednak aplikacja może sprawdzić czy nie zachodzi kolizja i powtórzyć generację klucza.


           key_t   mójklucz;
           mójklucz = ftok("/tmp/mojaapp", 'a');
   

W powyższym przykładzie klucz tworzony jest z kombinacji katalogu /tmp/mojaapp z literą 'a'. Inną możliwością jest użycie bierzącego katalogu:


           key_t   mójklucz;
           mykey = ftok(".", 'a');
   

Algorytm generacji klucza jest całkowicie zależny od programisty. Do póty, do póki nie dopuszcza się do przypadku wyścigu, powieszenia (deadlocks) procesu każda metoda jest dobra. W celu demonstracyjnym używamy ftok() zakładamy, że każdy klient posiada unikalny katalog 'domowy', a to powinno dać nam wystarczające klucze.

Choć wartość klucza jest odbierana, używana jest w póżniejszych wywołaniach systemowych w celu tworzenia lub dostępu do obiektów IPC.


next up previous contents
Next: Polecenie ipcs Up: Podstawy Previous: Identyfikatory IPC   Contents

2000-03-01


Poltronic