ftok函数用法详解
ftok函数简介
- 头文件包含
#include <sys/types.h>
#include <sys/ipc.h>
- 函数定义
key_t ftok(const char * pathname , int proj_id );
ftok函数常见使用错误
- 编译错误
warning: implicit declaration of function ‘ftok’ [-Wimplicit-function-declaration]
解决办法:包含头文件
#include <sys/types.h>
#include <sys/ipc.h>
ftok函数详细描述
ftok ()函数使用由给定的pathname(必须引用现有的可访问文件)命名的文件标识和proj_id(必须是非零)的最低有效8位来生成key_t类型的System V IPC密钥,适合与msgget (2) semget (2)或shmget (2)一起使用
当使用相同的proj_id值时,对于命名相同文件的所有路径名,结果值是相同的。当(同时存在的)文件或项目ID不同时,返回的值应该不同。
ftok函数返回值
成功时,返回生成的key_t值。如果失败,则返回-1,其中errno指示stat (2)系统调用的错误。
ftok函数其他说明
在一些古代系统上,原型是:
key_t ftok(char * pathname , char proj_id );
今天,proj_id是一个int ,但仍然只使用8位。典型的用法有一个ASCII字符proj_id ,这就是为什么当proj_id为零时行为被称为未定义的原因。
当然,不能保证得到的key_t是唯一的。通常,尽力而为的尝试将给定的proj_id字节、inode号的较低16位和设备号的较低8位组合成32位的结果。冲突很容易发生,例如在/dev/hda1上的文件和/dev/sda1 上的文件之间
ftok函数使用举例
参见semget (2)
评论区