ftok

Autres langues

Langue: pl

Autres versions - même langue

Version: 2001-11-28 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

NAZWA

ftok - przekszta³ca ¶cie¿kê i identyfikator projektu na klucz komunikacji miêdzyprocesowej (IPC) Systemu V

SK£ADNIA


# include <sys/types.h>

# include <sys/ipc.h>

key_t ftok(const char *pathname, int proj_id);

OPIS

Funkcja ftok wykorzystuje to¿samo¶æ pliku o nazwie podanej w pathname (która musi odnosiæ siê do istniej±cego, dostêpnego pliku) oraz 8 najmniej znacz±cych bitów proj_id (które musz± stanowiæ oktet niezerowy) do wygenerowania klucza komunikacji miêdzyprocesowej Systemu V, typu key_t, odpowiedniego do u¿ywania w msgget(2), semget(2), lub shmget(2).

Warto¶æ wynikowa jest taka sama dla wszystkich ¶cie¿ek stanowi±cych nazwy tego samego pliku, o ile u¿yje siê tej samej warto¶ci proj_id. Zwracane warto¶ci powinny siê ró¿niæ gdy (istniej±ce jednocze¶nie) pliki lub identyfikatory projektu ró¿ni± siê.

WARTO¦Æ ZWRACANA

W przypadku powodzenia zwracana jest wygenerowana warto¶æ key_t. W przypadku b³êdu zwracane jest -1, a errno wskazuje b³±d tak samo, jak dla funkcji systemowej stat(2).

ZGODNE Z

XPG4

UWAGI

Pod libc4 i libc5 (oraz pod SunOS 4.x) prototyp mia³ postaæ
key_t ftok(char *pathname, char proj_id);
Obecnie proj_id jest typu int, ale nadal tylko 8 bitów jest u¿ywanych. Typowe zastosowanie polega na umieszczeniu znaku ASCII w proj_id i dlatego mówi siê, ¿e zachowanie jest nieokre¶lone gdy proj_id jest zerem.

Oczywi¶cie, nie mo¿na daæ gwarancji, ¿e otrzymany key_t jest unikalny. Typowo, dla uzyskania najlepszego wyniku, ³±czone s±: podany bajt proj_id, 16 mniej znacz±cych bitów numeru i-wêz³a oraz 8 ni¿szych bitów numeru urz±dzenia w 32-bitowy wynik. kolizje mog± ³atwo wyst±piæ, na przyk³ad pomiêdzy plikami na /dev/hda1 a plikami na /dev/sda1.

ZOBACZ TAK¯E

ipc(5), msgget(2), semget(2), shmget(2), stat(2)