当前位置:网站首页>unix环境编程 第十五章 15.6 XSI IPC
unix环境编程 第十五章 15.6 XSI IPC
2022-08-09 10:26:00 【玛丽苏打肉饼】
15.6.1标识符和键
每个内核中的IPC结构(消息队列,信号量或共享存储段)都用一个非负整数的标识符加以引用。当一个IPC结构被创建,然后又被删除的时候,与这种结构相关的标识符连续加1,直至达到一个整型数的最大正值,然后又转回到0.
每个IPC对象都与一个键相关联,将这个键作为该对象的外部名。
无论何时创建IPC结构,都应指定一个键。这个键的数据类型是基本系统数据类型key_t,通常在头文件中被定义为长整型。这个键由内核编程标识符。这个键由内核变换成为标识符。
有多种方法使客户进程和服务器进程在同一IPC结构上面汇聚。
- 服务器进程可以指定键IPC_PRIVATE创建一个新的IPC结构,将返回的标识符存放在某处以便客户进程取用。IPC_PRIVATE键也可用于父进程子关系。父进程指定IPC_PRIVATE创建一个新IPC结构 ,所返回的标识符可供fork后的子进程使用。
- 可以在一个公共头文件中顶一个客户进程和服务器进程都认可的键。然后服务器进程指定此键创建一个新的IPC结构。
- 客户进程和服务器进程认同一个路径名和项目ID,接着,调用函数ftok将这两个值变为一个键。
ftok提供的唯一服务就是由一个路径名和项目ID产生一个键。
#include <sys/ipc.h>
key_t ftok(const char* path,int id);
//成功返回键,失败返回-1
path参数必须引用一个现有的文件,当产生键的时候,只使用id参数的低8位。
fork创建的键通常是用下列方式构成的:按给定的路径名取得其stat结构中的部分st_dev和st_ino字段,然后再将他们与项目ID组合起来。如果两个路径名引用的是两个不同的文件,那么ftok通常会为这两个路径名返回不同的键。但是因为i节点编号和键通常都存放在长整形中,所以创建键时可能会丢失信息。这意味着,对于不同文件的两个路径名,如果使用同意项目ID,那么可能产生相同的键。
15.6.2权限结构
XSI IPC为每一个IPC结构关联了一个ipc_perm结构。
创建IPC结构的时候,对所有的字段都赋初值。以后,可以调用msgctl,semctl,shmctl修改uid,gid和mode字段。为了修改这些值,调用进程必须是IPC结构的创建者或超级用户。
边栏推荐
- Redis 缓存主动更新策略
- 在犹豫中度过了老多天,今天的工作时记录
- 分类预测 | MATLAB实现CNN-LSTM(卷积长短期记忆神经网络)多特征分类预测
- Attentional Feature Fusion
- xmms的均衡器试验成功 音效相当不错 比rockbox可能还要好
- Master-slave postition changes cannot be locked_Slave_IO_Running shows No_Slave_Sql_Running shows No---Mysql master-slave replication synchronization 002
- 史上最小白之《Word2vec》详解
- MySQL备份与恢复
- OpenGL 2.0编程例子
- 笔记本电脑使用常见问题,持续更新
猜你喜欢
随机推荐
By asking where the variables are stored, the shepherd boy laughed and said to use pointers, Go lang1.18 introductory refining tutorial, from Bai Ding to Hongru, the use of go lang type pointers (Poin
关于页面初始化
3D printed this DuPont cable management artifact, and the desktop is no longer messy
Technology Sharing | Sending Requests Using cURL
可能95%的人还在犯的PyTorch错误
使用.NET简单实现一个Redis的高性能克隆版(四、五)
需求侧电力负荷预测(Matlab代码实现)
SQL Server查询优化
xmms的歌词显示及音量控制OK
深度学习--生成对抗网络(Generative Adversarial Nets)
1: bubble sort
浅析JWT安全问题
antd的Table列选择、列拓展
集合与函数
day16_03集合
Transformer+Embedding+Self-Attention原理详解
Cpolar内网穿透的面板功能介绍
公里周日
开源SPL,WebService/Restful广泛应用于程序间通讯,如微服务、数据交换、公共或私有的数据服务等。
basic operator