ftok(3)

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

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <sys/ipc.h>

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

DESCRIERE
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ă.

VALOAREA RETURNATĂ
Î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).

ATRIBUTE
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

STANDARDE
POSIX.1-2008.

ISTORIC
POSIX.1-2001.

NOTE
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.

EXEMPLE
A se vedea semget(2).

CONSULTAȚI ȘI
msgget(2), semget(2), shmget(2), stat(2), sysvipc(7)

TRADUCERE
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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.