首页 > 其他分享 >ftok()函数深度解析

ftok()函数深度解析

时间:2023-05-18 10:57:25浏览次数:46  
标签:文件 函数 proj key ftok 解析 id

关于ftok函数,先不去了解它的作用,先来说说为什么要用它,共享内存,消息队列\信号量它们三个都是一个中间介质,来进行通信的.这种介质多的是。就是怎么区分出来,就像唯一一个身份证来区分人一样。你随便来一个就行,就是因为这。只要唯一就行,就想起来了文件的设备编号和节点,它是唯一的,但是直接用它来作识别好像不太好,不过可以用它来产生一个号。ftok()就出场了。ftok函数具体形式如下:

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

其中参数fname是指定的文件名,这个文件必须是存在的而且可以访问的。id是子序号,它是一个8bit的整数。即范围是0~255。当函数执行成功,则会返回key_t键值,否则返回-1。在一般的UNIX中,通常是将文件的索引节点取出,然后在前面加上子序号就得到key_t的值。

有关该函数的三个常见问题:
1.pathname是目录还是文件的具体路径,是否可以随便设置
2.pathname指定的目录或文件的权限是否有要求
3.proj_id是否可以随便设定,有什么限制条件

解答:

1、ftok根据路径名,提取文件信息,再根据这些文件信息及project ID合成key,该路径可以随便设置。

2、该路径是必须存在的,ftok只是根据文件inode在系统内的唯一性来取一个数值,和文件的权限无关。

3、proj_id是可以根据自己的约定,随意设置。这个数字,有的称之为project ID; 在UNIX系统上,它的取值是1到255;

简单验证:
image

标签:文件,函数,proj,key,ftok,解析,id
From: https://www.cnblogs.com/sggggr/p/17411251.html

相关文章

  • table常用用具函数 - list用法
     table_listext.luafunctionlist.reset(listTb,val)fori=1,#listTbdolistTb[i]=valendendfunctionlist.castItemToNum(listTb)fori=1,#listTbdolistTb[i]=tonumber(listTb[i])endreturnlistTbendfunctionlis......
  • table常用工具函数 - 表用法
     table_ext.lua---如果table不为空则新建functiontable.getEmptyTable(tb)ifnil==tbornil~=next(tb)thenreturn{}endreturntbendfunctiontable.isEmpty(tb)returnnil==tbornil==next(tb)endfunctiontable.swap(tb,k1......
  • AI 0基础学习,名词解析
    AI学习过程中,常见的名词解析损失函数(lossfunction)数据集中所有样本的损失均值,能够量化目标的实际值与预测值之间的差距,最小化损失是模型的优化目标,实现损失最小化的方法称为优化算法,也称为寻解算法多项分布(multinomialdistribution)贝叶斯定理(Bayes’theorem)方差标准差的......
  • 大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战
     大数据Spark“蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战selectsum_all(age)from...hive>usedefault;showtables;select*fromemployeeforhaving;一:udf编码importorg.apache.hadoop.hive.ql.exec.UDF;importorg.apache.hadoop.io.Text;pub......
  • 激光雕刻机图片解析C#上位机stm32f407控制板源码 视频中机器运行
    激光雕刻机图片解析C#上位机stm32f407控制板源码视频中机器运行慢是因为测试激光头功率小,跑快了光斑在像素点烧蚀时间短打不出痕迹,需要速度快把激光头功率加大即可支持多种常用图片格式的转换例如jpg转bmp,支持彩色图片转灰度图,灰度图转二值图也称黑白图,转换完成点击工具栏中的计算......
  • Linux多进程18-sigaction 信号捕捉函数
    #include<signal.h>intsigaction(intsignum,conststructsigaction*act,structsigaction*oldact);-功能:检查或者改变信号的处理,信号捕捉-参数:-signum:需要捕捉的信号的编号或者宏值(信号的名称)-act:捕捉到信......
  • Linux多进程05-exec函数族
    execl:执行文件函数#include<unistd.h>intexecl(constchar*pathname,constchar*arg,...); 执行参数path字符串所代表的文件路径参数:-path:需要指定的执行的文件的路径或者名称(推荐使用绝对路径)-arg:是执行可......
  • Linux多进程13-kill,raise,abort函数
    #include<sys/types.h>#include<signal.h>intkill(pid_tpid,intsig);-功能:给某个进程pid,发送某个信号sig-参数:-pid:>0:将信号发送给指定的进程=0:将信号发送给当前的进程组=-1:将信号发送给每一个......
  • 第13章 使用Bind提供域名解析服务。 dns 正向反向解析 主从 dns加密传
    章节简述: 本章讲解了DNS域名解析服务的原理以及作用,介绍了域名查询功能中正向解析与反向解析的作用,并通过实验的方式演示了如何在DNS主服务器上部署正、反解析工作模式,以便让大家深刻体会到DNS域名查询的便利以及强大。本章还介绍了如何部署DNS从服务器以及DNS缓存服务器来提......
  • excel-08-Excel函数由浅入深-Excel函数
    Excel函数填充定义:是Excel中的内置函数,使用时,不区分大小写且每个函数都有其特定的功能和用途结构:以“=”为引导,函数名称开始,后接左括号,然后以逗号分隔输入的参数,最后是右括号。分类:共包含11类,分别是数据库函数,日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询......