linux 中ftok函数的用法

1、函数作用: 系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到

2、函数原型:

#include

#include

key_t ftok(const char *pathname, int proj_id);

3、函数参数解析:

a、const char *pathname:用于产生key_t值的文件名(文件必须存在),

b、int proj_id:proj_id是子序号,虽然为int,但是只有8个比特被使用(0-255)

4、返回值

当成功执行的时候,一个key_t值将会被返回,否则 -1 被返回。

5、函数内部实现过程

在一般的UNIX实现中,是将文件的索引节点号取出,前面加上子序号得到key_t的返回值。

如指定文件的索引节点号为65538,换算成16进制为 0x010002,而你指定的ID值为38,

换算成16进制为0x26,则最后的key_t返回值为0x26010002。

注意:

1、假如要确保key_t值不变,要目确保ftok的文档不被删除 ,要么不用ftok,指定一个固定的key_t值。

2、另外说一句:在aix等操作系统上,有多个文档系统,会出现分布在不同的文档系统上的两个文档具备相同的索引节点号,

此时用ftok对这两个文档进行操 作,只要id参数不变,得到的key_t值相同,造成创建消息队列失败。但是这种情况相当少见罢了。

因为在开发中涉及多种系统平台,在系统移植时发现ftok()函数在不同平台下存在一定的差异性。

当然,根本原因不在于ftok()本身,而应该是 操作系统对于文件系统管理的差异性。

6、测试用例:

#include

#include

#include

#include

#include

#include

#include

int main(int argc,char *argv[])

{

key_t key;

if(3 != argc)

{

printf("usage:ftok \n");

exit(1);

}

key = ftok(argv[1],atoi(argv[2]));

printf("key = %x\n",key);

return 0;

}

linux中ftok的作用,Unix/Linux编程之ftok函数用法相关推荐

  1. Linux中mv的作用是,linux中的mv命令的详细解释

    linxu下的mv命令是一个常用命令,可以为文件或者目录重命名,下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux的mv命令的详细解释的相关知识,希望对大家有帮助! 一.linu ...

  2. linux中profile文件作用,解析Linux系统中bashrc和profile文件的作用区别

    使用终端ssh登录Linux操作系统的控制台后,会出现一个提示符号(例如:#或~),在这个提示符号之后可以输入命令,Linux根据输入的命令会做回应,这一连串的动作是由一个所谓的Shell来做处理. ...

  3. unix网络编程之socket函数

    目录 作用 内容 参数 int family int type int protocol 返回值 int 说明 作用 为了执行网络I/O,一个进程必须做的第一件事情就是调用socket函数,指定需要的 ...

  4. Linux中常用目录作用

    Linux中常用目录作用 1.可以在家目录root或home,以及temp目录下随便放东西. 2.根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令的.其中,普 ...

  5. linux编程之pthread_create函数

    linux编程之pthread_create函数UNIX环境创建线程函数, 具体格式: #include<pthread.h> int pthread_create(pthread_t * ...

  6. Linux内存管理:ARM64体系结构与编程之cache(1)

    <Linux内存管理:ARM64体系结构与编程之cache(1)> <Linux内存管理:ARM64体系结构与编程之cache(2)> <ARM SMMU原理与IOMMU ...

  7. linux中的改变bin级别,Linux常用命令

    关机命令:shutdown -h now / shutdown -r now / reboot 切换图形化界面:startx      切换到命令行:注销即可 添加用户:useradd xiaomin ...

  8. Linux内存管理:ARM64体系结构与编程之cache(3):cache一致性协议(MESI、MOESI)、cache伪共享

    目录 为什么系统软件人员要深入了解cache? cache一致性协议 神马是MESI协议? MESI的操作 MESI状态图 演示:初始化状态为I的cache line 当本地CPU的缓存行状态为I时, ...

  9. Linux内存管理:ARM64体系结构与编程之cache(2):cache一致性

    <Linux内存管理:ARM64体系结构与编程之cache(1)> <Linux内存管理:ARM64体系结构与编程之cache(2)> <ARM SMMU原理与IOMMU ...

最新文章

  1. 用WinInet开发Internet客户端应用指南
  2. Linux内核版本 uname命令 GNU项目 Linux发行版
  3. SQL output子句的用法
  4. 一秒等于多少毫秒_使用kibana对电影一秒钟影评数据测试,详述配图演示如何使用收藏了...
  5. php文件运行的域名怎么改,discuz论坛更换域名,详细文件修改步骤
  6. BZOJ 1059 - 二分图匹配
  7. java校验文件格式_Java 判断文件是否为文本格式,并获取文件编码格式,读取内容!...
  8. 通过这5个简单的技巧减少GC开销
  9. 一阶电路暂态响应的结果分析。_阻尼比测试方法及谐响应分析
  10. 添加底部小火箭+目录
  11. 【华为云技术分享】【一统江湖的大前端】PPT制作库impress.js
  12. RAM调优之日志分析
  13. python findall函数_Python正则表达式
  14. Node.js Web开发框架
  15. CGI + FastCGI(PHP-FPM)联系与区别 【图解 + 注释】
  16. linux下无法安装VMware的解决方法
  17. 微信小程序根据经纬度动态定位计算周边商家导航距离
  18. java报表技术总结_15个Java的报表工具总结
  19. “《三国演义》人物出场统计“实例讲解
  20. 钉钉群机器人通知中的图片,突然不显示了

热门文章

  1. 想要自学软件开发,有没有什么好的方法?
  2. win10安装抓包工具wireshark
  3. 数据结构——第三章 栈和队列
  4. 计算机故障维修的流程,《电脑维修流程图(图文)》.doc
  5. linux性能调优看这篇就懂,[转载]Linux性能调优
  6. C++——函数匹配机制
  7. 通信软件行业规模及未来发展前景
  8. Ubuntu安装出现无法锁定管理目录
  9. DAX圣经学习笔记1 - 常用函数
  10. Java毕设项目中小型饭馆餐饮管理系统计算机(附源码+系统+数据库+LW)