NOMBRE¶
ftok - convierte un nombre de camino y un identificador de proyecto en una clave
IPC de System V
SINOPSIS¶
# include <sys/types.h>
# include <sys/ipc.h>
key_t ftok ( char *camino, int proy )
DESCRIPCIÓN¶
La función
ftok utiliza la identidad del fichero que indica
pathname (que debe referirse a un fichero existente y accesible) y los
8 bits menos significativos de
proj_id (que debe ser distinto de cero)
para generar una clave IPC de System V de tipo
key_t , adecuada para el
uso con
msgget(2),
semget(2), o
shmget(2).
El valor resultante es el mismo para todos los nombres de ruta que hacen
referencia al mismo fichero, cuando se utiliza el mismo valor de
proj_id. El valor devuelto debería ser diferente cuando los
ficheros (que existen simultáneamente) o los identificadores de proyecto
son distintos.
VALOR DEVUELTO¶
En caso de éxito se devuelve la clave
key_t generada. En caso de
fallo se devuelve -1, y la variable
errno indica el error al igual que
con la llamada al sistema
stat(2).
XPG4
OBSERVACIONES¶
Bajo libc4 y libc5 (y bajo SunOS 4.x) el prototipo era
key_t ftok(char *pathname,
char proj_id);
En la actualidad
proj_id es de tipo
int, pero se siguen utilizando
solamente 8 bits. Un uso típico es proporcionar un carácter ASCII
como valor
proj_id, ésto es por lo que se dice que el
comportamiento es indefinido cuando
proj_id es cero.
Por supuesto no se puede dar ninguna garantía de que el valor
key_t
resultante sea único. Habitualmente, una mejor aproximación combina
el byte
proj_id dado, los 16 bits de orden bajo del número de
i-nodo, y los 8 bits de orden bajo del número de dispositivo para formar
un resultado de 32 bits. Pueden darse casos de colisiones fácilmente, por
ejemplo entre ficheros en
/dev/hda1 y ficheros en
/dev/sda1.
VÉASE TAMBIÉN¶
ipc(5),
msgget(2),
semget(2),
shmget(2),
stat(2).