ftok函数详解Word下载.docx

上传人:b****6 文档编号:20741490 上传时间:2023-01-25 格式:DOCX 页数:8 大小:33.74KB
下载 相关 举报
ftok函数详解Word下载.docx_第1页
第1页 / 共8页
ftok函数详解Word下载.docx_第2页
第2页 / 共8页
ftok函数详解Word下载.docx_第3页
第3页 / 共8页
ftok函数详解Word下载.docx_第4页
第4页 / 共8页
ftok函数详解Word下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

ftok函数详解Word下载.docx

《ftok函数详解Word下载.docx》由会员分享,可在线阅读,更多相关《ftok函数详解Word下载.docx(8页珍藏版)》请在冰豆网上搜索。

ftok函数详解Word下载.docx

ls-i

以下为测试程序:

#include<

stdio.h>

sys/types.h>

sys/ipc.h>

#defineIPCKEY0x11

intmain(void)

{

inti=0;

for(i=1;

i<

256;

++i)

printf("

key=%x\n"

ftok("

/tmp"

i));

return0;

}

在成功获取到key之后,就可以使用该key作为某种方法的进程间通信的key值,例如shmget共享内存的方式。

shmget的函数原型为

intshmget(key_t,size_t,flag);

在创建成功后,就返回共享内存的描述符。

在shmget中使用到的key_t就是通过ftok的方式生成的

实例:

sys/shm.h>

errno.h>

string.h>

stdlib.h>

#defineSIZE1024

externinterrno;

intmain()

intshmid;

char*shmptr;

//创建共享内存

if((shmid=shmget(IPC_PRIVATE,SIZE,0600))<

0)

{

printf("

shmgeterror:

%s\n"

strerror(errno));

return-1;

}

//将共享内存连接到可用地址上

if((shmptr=(char*)shmat(shmid,0,0))==(void*)-1)

shmaterror:

memcpy(shmptr,"

helloworld"

sizeof("

));

printf("

sharememoryfrom%lxto%lx,content:

(unsignedlong)shmptr,(unsignedlong)(shmptr+SIZE),shmptr);

//拆卸共享内存

if((shmctl(shmid,IPC_RMID,0)<

0))

shmctlerror:

多进程之间共享内存情况:

unistd.h>

sys/wait.h>

key_tkey;

pid_tpid;

if((pid=fork())<

forkerror:

elseif(pid==0)

sleep

(2);

if((key=ftok("

/dev/null"

1))<

ftokerror:

if((shmid=shmget(key,SIZE,0600))<

exit(-1);

//memcpy(shmptr,"

child:

pidis%d,sharememoryfrom%lxto%lx,content:

getpid(),(unsignedlong)shmptr,(unsignedlong)(shmptr+SIZE

),shmptr);

childprocesssleep2seconds\n"

);

sleep

(2);

exit(0);

//parent

else

if((shmid=shmget(key,SIZE,0600|IPC_CREAT|IPC_EXCL))<

parent:

getpid(),(unsignedlong)shmptr,(unsignedlong)(shmptr+SIZE

parentprocesssleep2seconds\n"

waitpid(pid,NULL,0);

exit(0);

输出为:

shmctl(shmid,IPC_RMID,0)的作用是从系统中删除该恭喜存储段。

因为每个共享存储段有一个连接计数(shmid_ds结构中的shm_nattch),所以除非使用该段的最后一个进程终止与该段脱接,否则不会实际上删除该存储段

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1