key_t键和ftok函数(转)
key_t键
System V IPC使用key_t值作为它们的名字,在Redhat linux(后续验证默认都在该平台下)下key_t被定义为int类型,追溯如下:
/usr/include/sys/ipc.h
#ifndef __key_t_defined
typedef __key_t key_t;
#define __key_t_defined
#endif
/usr/include/bits/types.h
typedef __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
typedef __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */
typedef __KEY_T_TYPE __key_t; /* Type of an IPC key */
/usr/include/bits/typesizes.h
#define __KEY_T_TYPE __S32_TYPE
/usr/include/bits/types.h
#define __S32_TYPE int
ftok函数
函数ftok把一个已存在的路径名和一个整数标识得转换成一个key_t值,称为IPC键:
# include
# include
key_t ftok(const char *pathname, int proj_id);
DESCRIPTION
The ftok function uses the identity of the file named by the given pathname (which must refer to an existing, accessible file) and the least significant 8 bits of proj_id (which must be nonzero) to generate a key_t type System V IPC key。
该函数把从pathname导出的信息与id的低序8位组合成一个整数IPC键。
sample:
#include "unpipc.h"
int main(int argc, char **argv)
{
struct stat stat;
if (argc != 2)
err_quit("usage: ftok ");
Stat(argv[1], &stat);
printf("st_dev: %lx, st_ino: %lx, key: %x/n",
(u_long) stat.st_dev,(u_long) stat.st_ino,
Ftok(argv[1], 0x57));
exit(0);
}
程序运行结果:
[cbs@linux svipc]$ ./ftok /tmp/mysql.sock
st_dev: 802, st_ino: 34219, key: 57024219
1.pathname所在的文件系统的信息(stat结构的st_dev成员)
2.该文件在本文件系统内的索引节点号(stat结构的st_ino成员)
3. proj_id的低序8位(不能为0)
key_t键和ftok函数(转)相关推荐
- key_t键和ftok函数
目录 `key_t键`.`ftok函数` key_t键.ftok函数 key_t ftok(const char *pathname, int proj_id); 功能:通过ftok返回的是根据文件( ...
- 【IPC通信】key_t键和ftok函数
System V IPC分为三种: System V消息队列 System V信号量 System V共享内存区 这三种类型的IPC使用key_t值做为它们的名字.key_t这个数据类型在<sy ...
- key_t IPC键和ftok函数详解和剖析
统建立IPC通讯(如消息队列.共享内存时)必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok原型如下: key_t ftok( char * fname, int id ) fn ...
- ftok()函数解析
ftok 消息队列.信号灯.共享内存常用在Linux服务端编程的进程间通信环境中.而此三类编程函数在实际项目中都是用System V IPC函数实现的.System V IPC函数名称和说明如下表15 ...
- ftok() 函数讲解 获取内核键值
ftok() 函数之获取消息队列的键值 1.概述: 系统建立IPC通讯(消息队列.信号量和共享内存)时必须指定一个ID值,通常情况下,该ID值通过ftok函数得到. 2.原型: #include &l ...
- linux C -- ftok函数
链接: linux C学习目录 原文链接:https://blog.csdn.net/u013485792/article/details/50764224 关于ftok函数,先不去了解它的作用来先说 ...
- ftok函数的作用:
ftok函数的作用: 系统建立IPC通讯(如消息队列.共享内存时)必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok原型如下: key_t ftok( char * fname, ...
- ftok()函数的使用
在上一篇文章中,Mayuyu讲述了共享内存的原理以及使用方法.在创建共享内存之前,必须指定一个ID值,而这个ID值通常是通过现在要讲的ftok()函数得到.ftok()函数原型如下 其中参数fname ...
- ftok函数的key值是如何产生的
函数原型 key_t ftok(const char *pathname, int proj_id) 函数作用 返回一个key值,这个键值是唯一的,可以用它来识别文件,作为文件的身份证号.之后 ...
最新文章
- JDBC操作数据库实例
- jQuery 性能优化技巧
- iview area 遇到的坑
- 通过阅读 Douglas Crockford 的源码学习如何写 JSON parser(一)
- ga tsp matlab,遗传算法(GA)求解TSP问题MATLAB程序
- R语言学习笔记(三)多元数据的数据特征、相关分析与图形表示
- 如何教女朋友学 Python?
- delphi 判断两个时间差是否在一个指定范围内
- JS 新浪API获取IP归属地
- imx8mq - bootloader编译过程
- SOFA Weekly | Committer 聊天室、SOFAJRaft 本周发布、新手任务
- turtle递归作图绘制谢尔宾斯基地毯【详解】
- 智商一般学计算机,IQ最高的十大专业公布 智商不高慎选
- 互联网寒冬!一线互联网移动架构师筑基必备技能之Java篇,附带学习经验
- 提高医疗信息化或是解决看病难看病贵的有效助剂
- SAP UI5 应用开发教程之六十九 - 如何从 SAP UI5 Not Found 页面跳转回到正常的应用页面试读版
- 计算机视觉图像处理入门
- 单链表的基本操作-插入结点、删除结点、新建链表、查找结点位置
- 岛屿问题和昆虫越障问题以及岛屿最大面积
- Android中使用Volley开源库进行Http网络请求(GET方式)