社区
Linux/Unix社区
帖子详情
关于用ftok生成key的问题
liner09136
2006-08-01 11:19:34
key_t ftok(char *pathname,int projid)中
pathname如何设置,我设了好几个路径,在执行的时候都提示没有这个路径或文件
设置的路径是存在的,并且可以access的,怎么回事?
我用的是fedora core3
...全文
297
4
打赏
收藏
关于用ftok生成key的问题
key_t ftok(char *pathname,int projid)中 pathname如何设置,我设了好几个路径,在执行的时候都提示没有这个路径或文件 设置的路径是存在的,并且可以access的,怎么回事? 我用的是fedora core3
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hello_wyq
2006-08-02
打赏
举报
回复
你确信目录都能够被进程访问?
liner09136
2006-08-01
打赏
举报
回复
嗯,我试个多个存在的路径啊,目录跟文件名都试过。id也在1---255之间啊
用strerror提示:no such directory or file啊
hello_wyq
2006-08-01
打赏
举报
回复
首先pathname必须存在,并且可以访问
其次projid必须是在1-255之间的一个值
如果出现问题,请用perror来打印出对应的出错信息。
Cemondd
2006-08-01
打赏
举报
回复
该目录应该是与创建这个key的用户一致的才行。
Shell脚本实现
ftok
函数
“古老的 Sys IPC 仍然有好几种有效的用途。三种 IPC 对象是共享内存,信号灯和消息。”当使用到 IPC 的这些对象时,你需要为每个对象创建一个
Key
。虽然理论上来说我们在定义一个 IPC
Key
的时候可以使用任意自己喜欢的
Key
,但为了避免与其他的程序产生定义重复,在 UNIX/Linux 中一般会使用
key
_t
ftok
(const char *path, int id) 函数来
生成
一个比较唯一的
Key
值。然而,“每个人都讨厌 System V IPC。它比打孔纸带还慢,使用与文件系统完全无关少得可怜的名字空间,使用人类讨厌的数字给它的对象命名,并且还常常自己忘记自己
关于linux下
ftok
创建
key
的
问题
项目场景: 在多线程中使用信号量时需要先创建
key
,通过
key
去semget信号量。
问题
描述: 在测试时,发现一种异常情况,信号量递增超出系统限制,导致后续创建信号量失败,引发了其他显式的错误。 原因分析: semget函数是通过
key
来创建的,将
key
打印发现异常情况引起
key
值的变化。而
key
是有
ftok
创建 首先查看
ftok
函数: #include <sys/types.h> #include <sys/ipc.h>
key
_t
ftok
(const
关于使用
ftok
函数
生成
IPC通信所需
key
值的个人理解
在IPC通讯(如共享内存、消息队列)时,都必须指定唯一的一个
key
值,为了避免
key
值重复,利用一个函数
ftok
来
生成
相应
key
值。
ftok
原型如下:
key
_t
ftok
( char * fname, int id ); fname就时你指定的文件名(该文件必须存在且可以访问),id是子序号,虽然为int,但是只有最后8位被使用(0-255)。当成功执行的时候,一个
key
_t值将会被返
ftok
函数创建
key
重复
系统在同一台机器同一个磁盘的不同账户中使用时,出现
ftok
创建
key
时重复的现象, 而通过ls -i命令查看,i-node结点值明显不一致,为什么还会出现重复呢, 经过测试发现几个
问题
: 1、
ftok
产生
key
时,组合了3个变量:st_dev、st_ino、proj_id; 在Solaris系统上,取proj_id%0xff,st_dev后3位,st_ino后3位组成。 st_dev:1
ftok
函数的
key
值是如何产生的
key
值产生不是随机的。
key
值的产生和文件的索引节点号和参数proj_id有关。
Linux/Unix社区
23,121
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章