【IPC通信】key_t键和ftok函数】的更多相关文章

System V IPC分为三种: System V消息队列 System V信号量 System V共享内存区 这三种类型的IPC使用key_t值做为它们的名字. key_t这个数据类型在<sys/types.h>有定义,通常是一个至少32位的整数. 我们通常使用ftok()函数(可以如此记忆:file to key)把一个已存在的路径名和一个整数标识符转换成一个key_t值,称为IPC键. (当然,我们也可以不用ftok函数来生成该键,指定一个整数也是可以的,当然你需要考虑键的正负问题).…
系统建立IPC通讯(如消息队列.共享内存时)必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok原型如下: key_t ftok( char * fname, int id ) fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255). 当成功执行的时候,一个key_t值将会被返回,否则 -1 被返回. 在一般的UNIX实现中,是将文件的索引节点号取出,前面加上子序号得到key_t的返回值.如指定文件的索…
http://my.oschina.net/renhc/blog/35116 [IPC通信]基于管道的popen和pclose函数 恋恋美食  恋恋美食 发布时间: 2011/11/12 23:20 阅读: 15897 收藏: 13 点赞: 5 评论: 0 标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行. 这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程. popen函数还创建一个管道用于父子进程间通信.父进程要么从管道读信息,要么向管…
[转载] 原文链接:https://blog.csdn.net/u013485792/article/details/50764224 关于ftok函数,先不去了解它的作用来先说说为什么要用它,共享内存,消息队列,信号量它们三个都是找一个中间介质,来进行通信的,这种介质多的是.就是怎么区分出来,就像唯一一个身份证来区分人一样.你随便来一个就行,就是因为这.只要唯一就行,就想起来了文件的设备编号和节点,它是唯一的,但是直接用它来作识别好像不太好,不过可以用它来产生一个号.ftok()就出场了.ft…
ftok函数 系统建立IPC通讯(消息队列.信号量和共享内存)时必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok原型 头文件: #include <sys/types.h> #include <sys/ipc.h> 如下: key_t ftok( char * fname, int id ) fname就是你指定的文件名(已经存在的文件名),一般使用当前目录,如: key = ftok(".", 1); 这样就是将fname设为当前目录.…
ftok函数的定义:系统建立IPC通讯 (消息队列.信号量和共享内存) 时必须指定一个ID值.通常情况下,该id值通过ftok函数得到. 头文件 #include <sys/types.h> #include <sys/ipc.h> 函数原型: key_t ftok( const char * fname, int id ) fname就是你指定的文件名(已经存在的文件名),一般使用当前目录,如: key_t key; key = ftok(".", 1); 这…
#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>int main( void ){ int id=2; //char a[]="hello world"; //int k=ftok(a,id);//该文件必须是存在而且可以访问的,否则返回-1,函数执行失败 int k=ftok("myfile",id);//格式为:"文件名",文件名的路径…
3 IPC通信 用户空间 进程A <----无法通信----> 进程B -----------------|--------------------------------------|-------------- | | 内核空间 |<-------------> IPC <--------------->| ---------------------------------------------------------------------- IPC分3种: 消…
在上一篇“OS: 生产者消费者问题(多进程+共享内存+信号量)”中提到的方法二: 如果进程之间并没有父子关系,但是协商好了共享存储的 KEY , 那么在每个进程中,就可以通过 KEY 以及 shmget 函数获得共享存储的 I D , 进而通过 shmat 函数获得共享存储的实际地址,最后访问. 本文采用此种方式进行同步生产者和消费者. 1.头文件myshm.h: 要用到的定义和说明 /* * myshm.h * * Created on: Aug 3, 2013 * Author: root…
1.一次IPC通信過程的幾個步驟 一次通信过程简单的说有下面5个步骤,第一眼看上去,肯定不知道什么玩意,多看几遍,慢慢看,其实是能理解的. 1. Client将数据封装成Parcel. (前面已经讲过啦) 2. Client process 发送 BC_TRANSACTION 命令协议到kernel,(Client跟kernel说,我要开始远程通信啦) kernel找到Service process後,向Client process发送一个BR_TRANSACTION_COMPLETE返回协议,…