在Linux中,我想要将我的进程的一些内存内容与其他进程共享。其中一种方法是使用shm_open和mmap。就像下面这样。
然而,这样做的话,我无法共享“已分配的内存”。 我的问题是:我能在不重新分配它们的情况下共享先前分配的内存内容吗? 谢谢您的帮助。
/* Create a new memory object */
fd = shm_open( "/bolts", O_RDWR | O_CREAT, 0777 );
if( fd == -1 ) {
fprintf( stderr, "Open failed:%s\n",
strerror( errno ) );
return EXIT_FAILURE;
}
/* Set the memory object's size */
if( ftruncate( fd, sizeof( *addr ) ) == -1 ) {
fprintf( stderr, "ftruncate: %s\n",
strerror( errno ) );
return EXIT_FAILURE;
}
/* Map the memory object */
addr = mmap( 0, sizeof( *addr ),
PROT_READ | PROT_WRITE,
MAP_SHARED, fd, 0 );
if( addr == MAP_FAILED ) {
fprintf( stderr, "mmap failed: %s\n",
strerror( errno ) );
return EXIT_FAILURE;
}
然而,这样做的话,我无法共享“已分配的内存”。 我的问题是:我能在不重新分配它们的情况下共享先前分配的内存内容吗? 谢谢您的帮助。