首页 > 编程知识 正文

shell脚本基本命令编辑,安卓基于linux还是unix

时间:2023-05-05 23:53:45 阅读:52609 作者:3979

在linux上使用ftok函数

1、函数作用:系统建立IPC通信,如消息队列、共享存储器,必须指定ID值。 此id值通常由ftok函数获得

2、函数原型:

#包含

#包含

key _ tft ok (常数char * pathname,int proj_id );

3、函数参数分析:

a、用于生成constchar*pathname:key_t值的文件名(文件必须存在)、

b、int proj_id:proj_id是子序列号,虽然是int,但仅使用了8位(0-255 )。

4 .返回值

如果成功执行,将返回key_t值。 否则,返回-1。

5、函数内部实现过程

在典型的UNIX实现中,检索文件的索引节点号,并在前面附加子号以获得key_t的返回值。

如果指定文件的索引节点编号为65538、换算为十六进制值为0x010002、指定的ID值为38,

如果用十六进制换算为0x26,则最后一个key_t的返回值为0x26010002。

注意:

1、要防止key_t的值发生变化,请不要删除ftok文档,或者不使用ftok指定固定的key_t值。

2、再说一句,aix等操作系统可能有多个文档系统,分布在不同文档系统上的两个文档可能有相同的索引节点编号。

此时,如果在ftok中处理两个文档,但id参数不更改,则得到的key_t值相同,消息队列创建失败。 但是,这是相当罕见的。

发现由于开发涉及许多系统平台,系统移植时ftok ) )函数在不同平台上存在一定的差异。

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

6、测试用例:

#包含

#包含

#包含

#包含

#包含

#包含

#包含

(intmain(intargc,char *argv[] ) ) ) ) ) ) ) ) ) ) )

{

key_t key

if(3!=argc )

{

printf (用户: ftok (n ) );

退出(1;

}

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

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

返回0;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。