函数原型
key_t ftok(const char *pathname, int proj_id);
#pathname: 指定的文件名,该文件必须是存在而且可以访问
#proj_id:子序号,只有8个比特被使用(0-255)
#当成功执行时,返回一个key_t值,失败返回-1
ftok实现原理
ftok返回的key_t在Linux中是一个32位的值,它通过取proj_id参数的最低8...
分类:
系统相关 时间:
2015-08-07 20:09:39
阅读次数:
184
??
消息队列
消息队列是通过标识来引用,消息队列类似于一个消息链表,通过队列标识来引用,标识通过key来获取msgget(key_t key, int flag)。
创建队列过程:
1.确定队列的key,key可以自定义,也可以利用ftok来获取一个key
①利用ftok来得到一个key值ftok(const char * path, int id)路径必须是一个存在的文件路径...
分类:
系统相关 时间:
2015-08-07 09:39:05
阅读次数:
226
信号量通信机制可以看到,跟消息队列类似,也是包括两个结构。int semget (key_t __key, int __nsems, int __semflg) : 创建信号量集合 第一个参数:ftok产生的key值 第二个参数:创建的信号量个数 第三个参数:权限信息创建信号量例子:#incl...
分类:
系统相关 时间:
2015-07-29 22:53:45
阅读次数:
177
进程间通信:
1使用管道进行进程间的通信
(1)有名管道
mkfifo xxx.pipe
(2) 无名管道
int pipe(int pipefd[2]);
文件描述符 pipefd[0]代表读端,pipefd[1]代表写端
2. 使用共享内存实现进程间的通信
步骤:
获取key值,使用ftok函数
创建、获取共享内存,使用shmget函数
接挂共享内存,使用shma...
分类:
其他好文 时间:
2015-06-17 15:29:55
阅读次数:
133
wrapper.c
#include
#include
#include
#include
int my_shm_open(char* filename, int open_flag){
int shm_id;
key_t key;
key = ftok(filename, 0x03);
if(key == -1){
return ...
分类:
编程语言 时间:
2015-06-09 09:55:53
阅读次数:
152
发送端和接收端都可以发送和接收信息,只是发送和接收消息的类型不同,一个是1,一个是2.具体代码如下:
//发送端#include
#include
#include
#include
#include
struct msgbuf{
int type;char ptr[0];
};
int main(int argc,char *argv[]){
key_t key;key=ftok(argv...
分类:
其他好文 时间:
2015-05-13 23:18:51
阅读次数:
242
Posix标准shm_open:打开或创建一个共享内存区shm_unlink:删除一个共享内存区ftruncate:调整文件或共享内存区大小sem_open:创建信号量sem_wait:等待信号量sem_post:发送信号量sem_close:关闭信号量System V标准ftok:生成keyshm...
分类:
其他好文 时间:
2014-12-27 11:16:09
阅读次数:
308
3.1 概述System V IPC函数:3.2 key_t和ftok函数key_t是System V IPC的外部标识符,又称为IPC键,通过键,多个进程在同一个IPC对象上会合ftok函数将路径名和整数标识符转换为key_t值#include key_t ftok(char *pathname,...
分类:
其他好文 时间:
2014-12-22 22:30:04
阅读次数:
257
在上一篇文章中,Mayuyu讲述了共享内存的原理以及使用方法。在创建共享内存之前,必须指定一个ID值,而这个ID值通常是通过现在要讲的ftok()函数得到。ftok()函数原型如下
其中参数fname是指定的文件名,这个文件必须是存在的而且可以访问的。id是子序号,它是一个8bit的整数。即范围是0~255。
当函数执行成功,则会返回key_t键值,否则返...
分类:
其他好文 时间:
2014-12-09 17:43:11
阅读次数:
635
系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。 ftok原型如下: key_t ftok( char * fname, int id ) fname就时你指定的文件名(该文件必须是存在而且可以访...
分类:
系统相关 时间:
2014-11-30 01:01:09
阅读次数:
286