0
我有共同的记忆像这样指针在共享内存 - C语言的Linux
struct MEMORY {
char * type;
int number;
}
现在
在代码中,我让它共享一切正常,大概但其他进程不能看我怎么可以用什么指针指向指针在共享内存?
我有共同的记忆像这样指针在共享内存 - C语言的Linux
struct MEMORY {
char * type;
int number;
}
现在
在代码中,我让它共享一切正常,大概但其他进程不能看我怎么可以用什么指针指向指针在共享内存?
您需要确保共享内存附加在所有进程的地址空间中的相同的地址处。否则,就像你想象的那样,指针值在不同的进程中意味着不同的事物。
你对共享内存使用什么? mmap或shm?这是mmap调用中的第一个参数。
如果您无法确保所有进程中的地址空间相同,那么另一种方法是仅向我们提供补偿。每个进程都简单地从共享内存所连接的基址中偏移。
编辑:啊......也许你说的是“char * type”是一些任意指针。请记住,其他进程只能在之间查看共享内存中的内容。所有其他内存位置(指针值)都不可访问。所以,要使这个指针起作用,它需要的是中的共享内存,而不仅仅是任意的指针。这一点,你需要确保共享内存连接在所有进程中的相同地址。
看一看。 http://stackoverflow.com/questions/2489908/is-it-possible-to-store-pointers-in-shared-memory-without-using-offsets这可以帮助你。 – doniyor 2013-04-10 18:02:27
你尝试了什么?还有哪些其他过程正在使用它?你读过http://advancedlinuxprogramming.com/了吗,你读过一些很好的C编程书吗? – 2013-04-10 18:03:53
指针指向共享内存外的某些东西的问题很好,因为如果我使fork()父进程和子进程必须共享内存,但指针不起作用 – 2013-04-10 18:06:46