Как я могу поделиться существующей памятью с shm_open?

В 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;
}

Однако, таким образом, я не могу поделиться «уже выделенной памятью». мой вопрос: могу ли я поделиться ранее выделенным содержимым памяти без перераспределения их?

заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос