ftok用法
转载:
http://www.cnblogs.com/hjslovewcl/archive/2011/03/03/2314344.html
http://www.cnblogs.com/lihaozy/archive/2012/08/07/2626391.html
函数ftok把一个已存在的路径名和一个整数标识得转换成一个key_t值,称为IPC键:
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键。
使用时候需要注意两点:
一/产生不同的键值需要不同的pathname和不同的proj_id做参数,不同pathname和通过一个proj_id可能会产生同一个键值.
示例代码1:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ipc.h>
/*
26 * === FUNCTION ======================================================================
27 * Name: main
28 * Description:
29 * =====================================================================================
30 */
int
main ( int argc, char *argv[] )
{
struct stat stat1; if ( argc != ) {
printf("need two arguments.\n");
return EXIT_FAILURE;
} stat(argv[], &stat1);
printf("st_dev:%lx, st_innode:%lx, key:%x\n",
(u_long)stat1.st_dev, (u_long)stat1.st_ino, ftok(argv[],0x0957)); return EXIT_SUCCESS;
} /* ---------- end of function main ---------- */
运行结果1:
root@3me:/home/zfk/work/apue/chapter15# ./ .c
st_dev:, st_innode:18e02b2, key:570102b2
root@3me:/home/zfk/work/apue/chapter15#
结果分析:
1.pathname所在的文件系统的信息(stat结构的st_dev成员)
2.该文件在本文件系统内的索引节点号(stat结构的st_ino成员)
3. proj_id的低序8位(不能为0)
root@3me:/home/zfk/work/apue/chapter15# stat
文件:""
大小: 块: IO 块: 普通文件
设备:801h/2049d Inode: 硬链接:
权限:(/-rw-r--r--) Uid:( / root) Gid:( / root)
最近访问:-- ::25.268217896 +
最近更改:-- ::25.268217896 +
最近改动:-- ::25.296217898 +
创建时间:-
root@3me:/home/zfk/work/apue/chapter15# ./
st_dev:, st_innode:18e02b3, key:570102b3
root@3me:/home/zfk/work/apue/chapter15# rm -rf
root@3me:/home/zfk/work/apue/chapter15# touch
root@3me:/home/zfk/work/apue/chapter15# stat
文件:""
大小: 块: IO 块: 普通空文件
设备:801h/2049d Inode: 硬链接:
权限:(/-rw-r--r--) Uid:( / root) Gid:( / root)
最近访问:-- ::50.276218127 +
最近更改:-- ::50.276218127 +
最近改动:-- ::50.276218127 +
创建时间:-
root@3me:/home/zfk/work/apue/chapter15# ./
st_dev:, st_innode:18e02aa, key:570102aa
root@3me:/home/zfk/work/apue/chapter15#
运行结果可以看出,虽然文件名称都是 1,并未改变,但由于中间发生了文件删除并重新创建的操作,前后两次所得到的键值已经不再相同。
ftok用法的更多相关文章
- Linux IPC实践(6) --System V消息队列(3)
消息队列综合案例 消息队列实现回射客户/服务器 server进程接收时, 指定msgtyp为0, 从队首不断接收消息 server进程发送时, 将mtype指定为接收到的client进程的pid ...
- saltstack:使用教程之二高级模块用法Grains、Pillar
1.grains用法: 在客户端服务启动的时候收集客户的基础信息,在配置发生变化后也可以通过master重新同步 显示一个客户端的所有项目: [root@node5 ~]# salt "no ...
- Flash访问模块FDS用法及常见问题—nRF5 SDK模块系列一
FDS,全称Flash Data Storage,用来访问芯片内部Flash的.当你需要把数据存储在Flash中,或者读取Flash中的用户数据,或者更新或者删除Flash中的数据,那么FDS模块是你 ...
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- python enumerate 用法
A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...
- [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...
随机推荐
- 【leetcode】Sliding Puzzle
题目如下: On a 2x3 board, there are 5 tiles represented by the integers 1 through 5, and an empty square ...
- Educational Codeforces round 78 A、B
链接:https://codeforces.com/contest/1278 A:Shuffle Hashing 题意:对于一个字符串p可以执行一个"hash"操作,首先将p内的元 ...
- 一些 sql 调优的总结
一.sql 优化方案 1)列类型尽量定义成数值类型,且长度尽可能短,如主键和外键,类型字段等等 2)建立单列索引 3)根据需要建立多列联合索引.当单个列过滤之后还有很多数据,那么索引的效率将会 ...
- springboot(三).springboot用最简单的方式整合mybatis
Springboot整合mybatis 在众多的orm框架中,我使用最多的,最习惯的,也是目前使用最广泛的就是mybatis,接下来我们就去将springboot整合mybatis 对于spring ...
- .Net MVC JsonResult在IE下返回值变成下载文件问题
昨天,有用户反馈公司的系统,一提交表单就变成了下载文件.匆匆忙忙地发现是IE浏览器(360兼容模式,不就是IE内核吗),返回Json格式的字符串变成了下载JSON文件.(代码如下) return Js ...
- [BZOJ2111]:[ZJOI2010]Perm 排列计数(组合数学)
题目传送门 题目描述 称一个1,2,...,N的排列${P}_{1}$,${P}_{2}$,...,${P}_{N}$是Magic的,当且仅当2≤i≤N时,${P}_{i}$>${P}_{\fr ...
- Jar包方式运行web项目
使用Maven进行打包 在自己的电脑终端中进入到pom.xml文件的目录中执行maven打包.命令为: mvn clean package 1 成功的标志为上面显示BUILD SUCCESS成功打包 ...
- python正则之模式re.I re.M
re.I 忽略大小写 >>> re.match(r"A","abc",re.I) <_sre.SRE_Match object at 0 ...
- Vue/Element-ui 安装搭建开发环境(一)
Element 是饿了么全段开发团队推出的一套基于 vue.js2.0 的 PC Web 端开发框架. Element 中文文档:https://element.eleme.cn/#/zh-CN 1. ...
- 每日踩坑 2019-08-23 button 元素点击后刷新页面
button标签按钮会提交表单. 解决方案: <button class="btn btn-primary" type="button" id=" ...