0

我得到了以下成功执行的 C 代码:

...
fd = shm_open(memory_package_name, O_CREAT | O_RDWR | O_EXCL , S_IRUSR | S_IWUSR);

if (fd == -1) { //will fail if file already exists because of flag O_EXCL
    printf("\n shm_open() failed with error [%s]\n",strerror(errno));
    exit(EXIT_FAILURE);
} else {
    printf("shm_open success\n");
}
...

使用ls -l /dev/shm我看到name memory_package_name正确创建的文件,但是当我使用ipcs它时不显示任何共享内存段:

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

为什么?

4

1 回答 1

0

你试过shmget()shmat()吗?无论如何,如果您需要在两个不相关的进程之间共享内存,您shm_open()确实需要,但我认为您的案例中缺少的一点是调用附加到该内存区域的shmat().

于 2018-08-09T10:40:06.747 回答