系统建立IPC通讯(如消息队列、共享内存等)  必须指定一个ID值。通常情况下,该id值通过ftok函数得到。
ftok原型如下:

#include <sys/types.h> 
 #include <sys/ipc.h>

key_t ftok(const char *pathname, int proj_id);

pathname参数:  必须是一个已经存在且程序可范围的文件。

proj_id参数: 虽然定义为一个整数,其实实际只有8个bit位有效,即如果该参数大于255,则只有后8bit有效。

函数作用: convert a pathname and a project identifier to a System V IPC key, Key可用于msgget, semget, or shmget的key参数

示例:

#define  SHMSIZE   256

key_t  shmKey = ftok(“/tmp”, 128);
    if (-1 == shmKey)
    {
        printf("ERROR: ftok faield, %s.\n", strerror(errno));
        exit(-1);
    }

//创建共享内存

int shmid = shmget(shmKey, SHMSIZE, 0666);
    if (-1 == shmid)
    {
        shmid = shmget(shmKey, SHMSIZE, IPC_CREAT | 0666);
        if (-1 == shmid)
        {
            shmid = shmget(shmKey, 0, 0666);
            if (shmid >= 0)
            {
                shmctl(shmid, IPC_RMID, NULL);
                shmid = shmget(shmKey, SHMSIZE, IPC_CREAT | 0666);
            }
            if (-1 == shmid)
            {
                printf("ERROR: call shmget failed, %s.\n", strerror(errno));
                exit(-1);
            }
       }

//链接共享内存

char *shmptr  = (char *)shmat(shmid, (char *) 0, 0666);
     if (shmptr  == (char *)(-1))
      {
          printf("Call shmat()  failed, %s.\n", strerror(errno));
          exit(-1);
      }

memcpy(shmptr, "1234567890", sizeof("1234567890"));
     printf("share memory from %lx to %lx, content:%s\n",(unsigned long)shmptr, (unsigned long)(shmptr + SIZE), shmptr);

//拆卸共享内存
     if ((shmctl(shmid, IPC_RMID, 0) < 0))
     {
        printf("shmctl error:%s\n", strerror(errno));
        return -1;
     }

【C/C++】ftok函数作用和用法相关推荐

  1. python set类型和set()函数作用、用法等集合,让你学会用set

    本文主要收集整理Python set的类型.作用.用法等知识点的收集整理,Python set是什么意思,看完本文的文章集合基本就会使用Python set了. 1.Python-set() 函数 2 ...

  2. vb语法-Clng()函数作用及用法

    VBScript CLng 函数 VBScript 函数参考手册 定义和用法 CLng 函数可把表达式转换为长整形(Long)类型. 注释:值必须是介于 -2147483648 与 214748364 ...

  3. linux进程通信 --ftok函数

    ftok函数 作用:系统建立IPC通讯 (消息队列.信号量和共享内存) 时必须指定一个ID值.通常情况下,该id值通过ftok函数得到. 原型: #include <sys/types.h> ...

  4. linux中ftok的作用,Unix/Linux编程之ftok函数用法

    linux 中ftok函数的用法 1.函数作用: 系统建立IPC通讯(如消息队列.共享内存时)必须指定一个ID值.通常情况下,该id值通过ftok函数得到 2.函数原型: #include #incl ...

  5. C# this.Invoke()的作用与用法、不阻塞UI界面线程的延时函数

    一.this.Invoke()的作用与用法.不阻塞UI界面线程的延时函数 Invoke()的作用是:在应用程序的主线程上执行指定的委托.一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时, ...

  6. ftok函数的作用:

    ftok函数的作用: 系统建立IPC通讯(如消息队列.共享内存时)必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok原型如下: key_t ftok( char * fname, ...

  7. oracle的chr的使用,Oracle 学习之:ASCII,CHR函数的作用和用法

    对于ASCII以及CHR函数的用法,Oracle给出的解释是: ASCII(x)gets the ASCII value of the character X, CHR() and ASCII() h ...

  8. typedef的作用和用法(给结构体,函数指针,数组取别名)

    typedef的作用和用法 作用(typedef 能给int,double,float,char等数据类型取别名) typedef 还能给结构体取别名 typedef 还能给函数指针取别名 typed ...

  9. C语言 SLEEP函数不起作用,C语言中的sleep() 函数 sleep函数的具体用法

    导航:网站首页 > C语言中的sleep() 函数 sleep函数的具体用法 C语言中的sleep() 函数 sleep函数的具体用法 相关问题: 匿名网友: 关于sleep()函数在windo ...

最新文章

  1. matlab中如何求零极点,Matlab中绘制零极点
  2. 移动服务机器人模块选型
  3. 【转载】Gradle学习 第一章:引言
  4. java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
  5. 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂) v阅读目录
  6. vscode终端乱码
  7. linux进程tss和ldt,x86体系下linux中的任务切换与TSS
  8. vue导入音乐_现在哪个软件听音乐完全免费?
  9. 远程机器上无法用Assembly.Load(path).CreateInstance(ClassName)?
  10. 对JSON格式的城市按照拼音首字母排序
  11. java 实现 PDF 转 TIF【黑白版】
  12. 长方形的周长公式的c语言,长方形周长公式
  13. windows下Elasticsearch安装、ElasticSearch-head插件安装使用
  14. 如何微信公众号中的视频保存下来
  15. 有一个多项式:Pn(x)=a0x+a1x+….+anx(n=10),它们的系数存放在一个一维数组中,编写程序,输入系数和x的值,计算并输出Pn(x)的结果。
  16. Vistor(访问者模式)行为型
  17. SpringBoot引入第三方SDK以及打包
  18. w10投影全屏设置_教你win10连接投影仪显示比例不正常的解决教程
  19. linux命令:cp和scp
  20. 基于虚拟机Ubuntu系统下C语言简单编写程序

热门文章

  1. MPC学习笔记(1)——原理
  2. 第七周作业——任务分解
  3. 一个实时获取股票数据的安卓应用程序
  4. 共享经济其实很“自私”,区块链技术想给它一条出路
  5. 测评宝塔编译安装LNMP与LNMP一键安装包速度比较
  6. Oracle 增加表空间
  7. 集成学习—GBDT(论文研读)
  8. g++ -L 和-l -I参数
  9. body中的基本标签
  10. QTP简单框架(8)之HTML报表