ftok函数的作用:
系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。
ftok原型如下:
key_t ftok( char * fname, int id )
fname就时你指定的文件名,id是子序号。

在一般的UNIX实现中,是将文件的索引节点号取出,前面加上子序号得到key_t的返回值。
如指定文件的索引节点号为65538,换算成16进制为0x010002,而你指定的ID值为38,换算成16进制为0x26,则最后的key_t返回值为0x26010002。
查询文件索引节点号的方法是: ls -i
当删除重建文件后,索引节点号由操作系统根据当时文件系统的使用情况分配,因此与原来不同,所以得到的索引节点号也不同。
如果要确保key_t值不变,要目确保ftok的文件不被删除,要么不用ftok,指定一个固定的key_t值,比如:
#define IPCKEY 0x111
char path[256];

sprintf( path, "%s/etc/config.ini", (char*)getenv("HOME") );
    msgid=ftok( path, IPCKEY );[/code]

同一段程序,用于保证两个不同用户下的两组相同程序获得互不干扰的IPC键值。
由于etc/config.ini(假定)为应用系统的关键配置文件,因此不存在被轻易删除的问题——即使被删,也会很快被发现并重建(此时应用系统也将被重起)。
ftok()的设计目的也在于此。

ftok函数的作用:相关推荐

  1. linux中ftok的作用,Unix/Linux编程之ftok函数用法

    linux 中ftok函数的用法 1.函数作用: 系统建立IPC通讯(如消息队列.共享内存时)必须指定一个ID值.通常情况下,该id值通过ftok函数得到 2.函数原型: #include #incl ...

  2. 【C/C++】ftok函数作用和用法

    系统建立IPC通讯(如消息队列.共享内存等)  必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok原型如下: #include <sys/types.h>   #in ...

  3. linux环境编程-- ftok()函数

    系统建立IPC通讯(如消息队列.共享内存时)必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok原型如下: key_t ftok( char * fname, int id ) f ...

  4. linux C -- ftok函数

    链接: linux C学习目录 原文链接:https://blog.csdn.net/u013485792/article/details/50764224 关于ftok函数,先不去了解它的作用来先说 ...

  5. ftok函数的key值是如何产生的

    函数原型  key_t    ftok(const char *pathname, int proj_id) 函数作用 返回一个key值,这个键值是唯一的,可以用它来识别文件,作为文件的身份证号.之后 ...

  6. ftok()函数深度解析

    关于ftok函数,先不去了解它的作用来先说说为什么要用它,共享内存,消息队列,信号量它们三个都是找一个中间介质,来进行通信的,这种介质多的是.就是怎么区分出来,就像唯一一个身份证来区分人一样.你随便来 ...

  7. Linux下的ftok()函数

    linux ftok()函数 - 清清飞扬 - 博客园 (cnblogs.com) 系统建立IPC通讯(如消息队列.共享内存时)必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok ...

  8. linux进程通信 --ftok函数

    ftok函数 作用:系统建立IPC通讯 (消息队列.信号量和共享内存) 时必须指定一个ID值.通常情况下,该id值通过ftok函数得到. 原型: #include <sys/types.h> ...

  9. ftok函数参数解析

    转载https://blog.csdn.net/u013485792/article/details/50764224 关于ftok函数,先不去了解它的作用来先说说为什么要用它,共享内存,消息队列,信 ...

最新文章

  1. android状态机实现原理
  2. 爬虫教程( 2 ) --- 爬虫框架 Scrapy、Scrapy 实战
  3. 作者:魏凯(1981-),男,中国信息通信研究院移动互联网与大数据部高级工程师、副主任。...
  4. python冒泡排序_python实现基本算法之冒泡排序(Bubble Sort)
  5. 求基于图像处理的身份证号码识别的程序
  6. JDK 的下载与安装(非常详细!)
  7. 09-TensorFlow 基于WDCNN的轴承故障诊断
  8. 学校机房中计算机软件安装,学校机房软件维护与安装快捷方法.doc
  9. mac的hosts文件位置在哪?
  10. 开发游戏十年,遭遇游戏开发史上最诡异事件,然而被我成功解决了!
  11. linux系统外接硬盘_linux指定某用户某组挂载外接硬盘以便操作硬盘
  12. Mac OS 10.15 修改登录壁纸
  13. python画图,坐标轴问题
  14. 状态可观性和参数可辨识性
  15. MVC和MVVM框架介绍
  16. 获取当前时间戳13位
  17. windows下快速安装nginx 并配置 开机自启动
  18. Fmoc-NH-PEG-MAL,芴甲氧羰基保护氨基-聚乙二醇-马来酰亚胺;内附FMOC脱保护条件
  19. 电流转电压模块4-20mA转0-3.3/5V/10V/15V转换变送器电路原理解析
  20. 全球知名网络安全公司 Mandiant 你也有今天

热门文章

  1. collections库
  2. (二)进程管理之进程状态及组织方式
  3. PHP两种调用接口方式
  4. 百度网盘提速法,不用插件,不用安装脚本
  5. javaScript搜索框
  6. Relation-Aware Global Attention
  7. JAVA-----锁机制
  8. escape JavaScript
  9. python常用画图颜色
  10. 如何在iPhone,iPad或Mac上的Safari中启用收藏夹图标