ftok(3) Library Functions Manual ftok(3)

ftok - convertește un nume de rută și un identificator de proiect într-o cheie IPC System V

Biblioteca C standard (libc, -lc)

#include <sys/ipc.h>

key_t ftok(const char *nume-rută, int proj_id);

Funcția ftok() utilizează identitatea fișierului numit prin nume-rută dat (care trebuie să se refere la un fișier existent și accesibil) și cei mai puțin semnificativi 8 biți ai lui proj_id (care trebuie să fie diferiți de zero) pentru a genera o cheie IPC System V de tip key_t, adecvată pentru utilizare cu msgget(2), semget(2) sau shmget(2).

Valoarea rezultată este aceeași pentru toate numele de rută care denumesc același fișier, atunci când se utilizează aceeași valoare pentru proj_id. Valoarea returnată ar trebui să fie diferită atunci când fișierele (există simultan) sau ID-urile de proiect diferă.

În caz de succes, se returnează valoarea key_t generată. În caz de eșec, se returnează -1, cu errno indicând eroarea ca în cazul apelului de sistem stat(2).

Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

Interfață Atribut Valoare
ftok() Siguranța firelor MT-Safe

POSIX.1-2008.

POSIX.1-2001.

Pe unele sisteme vechi, prototipul era:


key_t ftok(char *nume-rută, char proj_id);

În prezent, proj_id este un int, dar în continuare sunt utilizați doar 8 biți. Utilizarea tipică are un caracter ASCII proj_id, motiv pentru care se spune că are un comportament nedefinit atunci când proj_id este zero.

Desigur, nu se poate garanta că valoarea key_t rezultată este unică. În mod obișnuit, o încercare cât mai bună combină octetul proj_id dat, cei 16 biți inferiori ai numărului de inode și cei 8 biți inferiori ai numărului de dispozitiv într-un rezultat pe 32 de biți. Se pot produce cu ușurință coliziuni, de exemplu între fișierele de pe /dev/hda1 și fișierele de pe /dev/sda1.

A se vedea semget(2).

msgget(2), semget(2), shmget(2), stat(2), sysvipc(7)

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

31 octombrie 2023 Pagini de manual de Linux 6.06