linux中ftok的作用,Unix/Linux编程之ftok函数用法
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函数用法相关推荐
- Linux中mv的作用是,linux中的mv命令的详细解释
linxu下的mv命令是一个常用命令,可以为文件或者目录重命名,下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux的mv命令的详细解释的相关知识,希望对大家有帮助! 一.linu ...
- linux中profile文件作用,解析Linux系统中bashrc和profile文件的作用区别
使用终端ssh登录Linux操作系统的控制台后,会出现一个提示符号(例如:#或~),在这个提示符号之后可以输入命令,Linux根据输入的命令会做回应,这一连串的动作是由一个所谓的Shell来做处理. ...
- unix网络编程之socket函数
目录 作用 内容 参数 int family int type int protocol 返回值 int 说明 作用 为了执行网络I/O,一个进程必须做的第一件事情就是调用socket函数,指定需要的 ...
- Linux中常用目录作用
Linux中常用目录作用 1.可以在家目录root或home,以及temp目录下随便放东西. 2.根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令的.其中,普 ...
- linux编程之pthread_create函数
linux编程之pthread_create函数UNIX环境创建线程函数, 具体格式: #include<pthread.h> int pthread_create(pthread_t * ...
- Linux内存管理:ARM64体系结构与编程之cache(1)
<Linux内存管理:ARM64体系结构与编程之cache(1)> <Linux内存管理:ARM64体系结构与编程之cache(2)> <ARM SMMU原理与IOMMU ...
- linux中的改变bin级别,Linux常用命令
关机命令:shutdown -h now / shutdown -r now / reboot 切换图形化界面:startx 切换到命令行:注销即可 添加用户:useradd xiaomin ...
- Linux内存管理:ARM64体系结构与编程之cache(3):cache一致性协议(MESI、MOESI)、cache伪共享
目录 为什么系统软件人员要深入了解cache? cache一致性协议 神马是MESI协议? MESI的操作 MESI状态图 演示:初始化状态为I的cache line 当本地CPU的缓存行状态为I时, ...
- Linux内存管理:ARM64体系结构与编程之cache(2):cache一致性
<Linux内存管理:ARM64体系结构与编程之cache(1)> <Linux内存管理:ARM64体系结构与编程之cache(2)> <ARM SMMU原理与IOMMU ...
最新文章
- 用WinInet开发Internet客户端应用指南
- Linux内核版本 uname命令 GNU项目 Linux发行版
- SQL output子句的用法
- 一秒等于多少毫秒_使用kibana对电影一秒钟影评数据测试,详述配图演示如何使用收藏了...
- php文件运行的域名怎么改,discuz论坛更换域名,详细文件修改步骤
- BZOJ 1059 - 二分图匹配
- java校验文件格式_Java 判断文件是否为文本格式,并获取文件编码格式,读取内容!...
- 通过这5个简单的技巧减少GC开销
- 一阶电路暂态响应的结果分析。_阻尼比测试方法及谐响应分析
- 添加底部小火箭+目录
- 【华为云技术分享】【一统江湖的大前端】PPT制作库impress.js
- RAM调优之日志分析
- python findall函数_Python正则表达式
- Node.js Web开发框架
- CGI + FastCGI(PHP-FPM)联系与区别 【图解 + 注释】
- linux下无法安装VMware的解决方法
- 微信小程序根据经纬度动态定位计算周边商家导航距离
- java报表技术总结_15个Java的报表工具总结
- “《三国演义》人物出场统计“实例讲解
- 钉钉群机器人通知中的图片,突然不显示了