有一个key_t的意义是什么是访问共享内存的关键是shmget()的返回
当使用共享内存时,为什么要关心创建一个密钥
key_t ftok(const char *path,int id); 在下面的代码段中? key_t key; int shmid; key = ftok("/home/beej/somefile3",'R'); shmid = shmget(key,1024,0644 | IPC_CREAT); 从我所了解的,访问给定的共享内存所需要的是shmid,而不是密钥.还是我错了?如果我们需要的是shmid,那么每次不只是创建一个随机密钥的要点是什么? 编辑 @ Beej’s Guide to Unix IPC可以看:
阅读这个,这给我的印象是,需要附加到共享内存块是一个关键.但这不是真的吗? 解决方法
是的,在使用shmget()打开它之后,您需要使用shmid访问共享内存(使用shmat()).但是,您要访问的共享内存的具体块基于您正在使用的密钥,即,希望通过shm进行通信的不同进程将需要使用相同的密钥.如果你只是使用一个随机数作为关键,你可能会遇到一些其他无关的程序.
我打算建议看看Beej’s Guide to IPC,但我看到你已经找到了:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |