当前位置: 技术问答>linux和unix
动态扩大共享内存问题
来源: 互联网 发布时间:2015-09-30
本文导语: 我先定义两个结构 typedef struct tagA { byte a[100]; }A; struct tagB { A * pa; //for 进程A int b[100]; //for 进程B int c[100]; //for 进程C }B; //定义的B的变量, B b; 现在我在服务进程D...
我先定义两个结构
typedef struct tagA
{
byte a[100];
}A;
struct tagB
{
A * pa; //for 进程A
int b[100]; //for 进程B
int c[100]; //for 进程C
}B;
//定义的B的变量,
B b;
现在我在服务进程D中将b映射为共享内存,但没有给b.pa分配空间, 由另外一个进程A根据需要动态分配该空间,其余的两个变量分别为进程B,C所用.
我的问题是:
A 如果进程A需要分配pa, 或由服务进程D响应A的请求分配空间该怎么做?
B 上面的做法对其它两个进程B和C有什么影响?
typedef struct tagA
{
byte a[100];
}A;
struct tagB
{
A * pa; //for 进程A
int b[100]; //for 进程B
int c[100]; //for 进程C
}B;
//定义的B的变量,
B b;
现在我在服务进程D中将b映射为共享内存,但没有给b.pa分配空间, 由另外一个进程A根据需要动态分配该空间,其余的两个变量分别为进程B,C所用.
我的问题是:
A 如果进程A需要分配pa, 或由服务进程D响应A的请求分配空间该怎么做?
B 上面的做法对其它两个进程B和C有什么影响?
|
1,
进程通信(消息队列,信号,套接字,共享内存...)
但已经是共享内存的方式了,所以A直接分配就可以了,没有必要D分配了吧?
2,没有影响
进程通信(消息队列,信号,套接字,共享内存...)
但已经是共享内存的方式了,所以A直接分配就可以了,没有必要D分配了吧?
2,没有影响