ftok - Convertir un nom de fichier et un identificateur de projet en clé
IPC System V
Bibliothèque C standard (
libc,
-lc)
#include <sys/ipc.h>
key_t ftok(const char *pathname, int
proj_id);
La fonction
ftok() utilise l'identité du fichier indiqué
par
pathname (qui doit exister et être accessible), et les huit
bits de poids faible de
proj_id (qui doit être non nul) pour
créer une clé IPC System V de type
key_t,
utilisable avec
msgget(2),
semget(2) ou
shmget(2).
La valeur résultante est la même pour tous les chemins
d'accès identifiant le même fichier, en utilisant une valeur
identique pour
proj_id. La valeur devrait être différente
lorsque des fichiers différents (existants simultanément), ou
des identificateurs de projet différents sont employés.
En cas de succès, la clé générée
key_t
est renvoyée. Sinon elle renvoie -1, et
errno indique l'erreur
de la même façon que l'appel système
stat(2).
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
ftok() |
Sécurité des threads |
MT-Safe |
POSIX.1-2001, POSIX.1-2008.
Sur d'anciens systèmes, le prototype était :
key_t ftok(char *pathname, char proj_id);
De nos jours
proj_id est un
int, mais seuls huit bits sont
utilisés. L'habitude veut que l'on utilise un caractère ASCII
comme identifiant de
proj_id, ce qui explique pourquoi le comportement
est indéfini lorsque
proj_id vaut zéro.
Naturellement, aucune garantie ne peut être donné sur le fait que
la clé
key_t résultante soit unique. En
général, la meilleure méthode est de combiner l'octet de
proj_id, les seize bits de poids faible du numéro d'inode, et
les huit bits de poids faible du numéro de périphérique
pour obtenir un entier sur 32 bits. Des collisions peuvent se produire
facilement, par exemple entre les fichiers se trouvant sur
/dev/hda1 et
ceux sur
/dev/sda1.
Consultez
semget(2).
msgget(2),
semget(2),
shmget(2),
stat(2),
sysvipc(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]> et David Prévot <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]