侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 238 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

ftok函数用法详解

noerror
2022-10-04 / 0 评论 / 0 点赞 / 52 阅读 / 459 字 / 正在检测是否收录...

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)

0

评论区