【C/C++】ftok函数作用和用法
系统建立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函数作用和用法相关推荐
- python set类型和set()函数作用、用法等集合,让你学会用set
本文主要收集整理Python set的类型.作用.用法等知识点的收集整理,Python set是什么意思,看完本文的文章集合基本就会使用Python set了. 1.Python-set() 函数 2 ...
- vb语法-Clng()函数作用及用法
VBScript CLng 函数 VBScript 函数参考手册 定义和用法 CLng 函数可把表达式转换为长整形(Long)类型. 注释:值必须是介于 -2147483648 与 214748364 ...
- linux进程通信 --ftok函数
ftok函数 作用:系统建立IPC通讯 (消息队列.信号量和共享内存) 时必须指定一个ID值.通常情况下,该id值通过ftok函数得到. 原型: #include <sys/types.h> ...
- linux中ftok的作用,Unix/Linux编程之ftok函数用法
linux 中ftok函数的用法 1.函数作用: 系统建立IPC通讯(如消息队列.共享内存时)必须指定一个ID值.通常情况下,该id值通过ftok函数得到 2.函数原型: #include #incl ...
- C# this.Invoke()的作用与用法、不阻塞UI界面线程的延时函数
一.this.Invoke()的作用与用法.不阻塞UI界面线程的延时函数 Invoke()的作用是:在应用程序的主线程上执行指定的委托.一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时, ...
- ftok函数的作用:
ftok函数的作用: 系统建立IPC通讯(如消息队列.共享内存时)必须指定一个ID值.通常情况下,该id值通过ftok函数得到. ftok原型如下: key_t ftok( char * fname, ...
- oracle的chr的使用,Oracle 学习之:ASCII,CHR函数的作用和用法
对于ASCII以及CHR函数的用法,Oracle给出的解释是: ASCII(x)gets the ASCII value of the character X, CHR() and ASCII() h ...
- typedef的作用和用法(给结构体,函数指针,数组取别名)
typedef的作用和用法 作用(typedef 能给int,double,float,char等数据类型取别名) typedef 还能给结构体取别名 typedef 还能给函数指针取别名 typed ...
- C语言 SLEEP函数不起作用,C语言中的sleep() 函数 sleep函数的具体用法
导航:网站首页 > C语言中的sleep() 函数 sleep函数的具体用法 C语言中的sleep() 函数 sleep函数的具体用法 相关问题: 匿名网友: 关于sleep()函数在windo ...
最新文章
- matlab中如何求零极点,Matlab中绘制零极点
- 移动服务机器人模块选型
- 【转载】Gradle学习 第一章:引言
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
- 详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂) v阅读目录
- vscode终端乱码
- linux进程tss和ldt,x86体系下linux中的任务切换与TSS
- vue导入音乐_现在哪个软件听音乐完全免费?
- 远程机器上无法用Assembly.Load(path).CreateInstance(ClassName)?
- 对JSON格式的城市按照拼音首字母排序
- java 实现 PDF 转 TIF【黑白版】
- 长方形的周长公式的c语言,长方形周长公式
- windows下Elasticsearch安装、ElasticSearch-head插件安装使用
- 如何微信公众号中的视频保存下来
- 有一个多项式:Pn(x)=a0x+a1x+….+anx(n=10),它们的系数存放在一个一维数组中,编写程序,输入系数和x的值,计算并输出Pn(x)的结果。
- Vistor(访问者模式)行为型
- SpringBoot引入第三方SDK以及打包
- w10投影全屏设置_教你win10连接投影仪显示比例不正常的解决教程
- linux命令:cp和scp
- 基于虚拟机Ubuntu系统下C语言简单编写程序