【发布时间】:2013-01-11 07:09:31
【问题描述】:
我需要在 C/C++ 中的不同可执行文件之间定义一个共享结构。我怎样才能做到这一点? 在我的 starter.c 文件中:
pid_t child = fork();
if (child > 0) {
// Parent.
... // detach shared memory
argv[0] = "./app1";
execv(argv[0], argv);
}
else {
// Child.
argv[0] = "./app2";
execv(argv[0], argv);
}
- start.h -> 定义共享结构
- start.c -> 创建对象和fork(如上面的代码)
- app.c -> 使用共享结构
更新:
如果我在 start.h 处定义一个类,我会遇到分段错误, 在共享内存中的 fork() 之前创建它(使用 MAP_SHARED),并在 app1.c 中访问它的成员(如 shared_class->s)
所以问题是:如何在执行后保持类/变量不变?
【问题讨论】:
-
这个问题特别不清楚。您能否发布一些与共享内存映射相关的代码,并具体说明您的障碍是什么?
-
假设我已经分叉并使用了类似于上面代码的 execv。因此,有一个 starter.c 文件和一个 app.c 文件。我应该如何定义一个可以被该方法派生的所有现有进程访问的共享结构(或变量)?
-
您是在询问一种在进程之间发送/接收数据的方法吗?
-
@frozenkoi:不需要实现点2点连接。只是一个可供所有进程访问的共享缓冲区
-
什么是app.c,什么是starter.c?
标签: c parallel-processing exec fork shared-memory