共享内存:shmat()调用成功但不增加nattach

时间:2016-04-27 22:24:49

标签: c shared-memory

我试图附加现有的共享内存段,但nattach值不会增加,如shmat的api中所示。

我的代码:

#include  <stdio.h>
#include <sys/shm.h>
#include <sys/errno.h>

void attachSharedMem(char* shm_id) {
    printf("Attach shared mem ID %s ", shm_id);
    void* res;
    res = shmat(atoi(shm_id), NULL, 0);
    printf("\nAttach result %p", res);
    printf("\nError %d", errno);
}

结果:

Attach shared mem ID 112590871 
Attach result 0x7f63df61e000
Error 0

但运行ipcs -m显示nattach对于shmid 112590871仍为0

如果我传递了一个虚假的shmid,它返回-1并将errno设置为22,所以看起来有效shmid的调用是成功的。连续调用会返回不同的地址,因此我认为我将该段附加到多个位置,但nattach从不递增。

0 个答案:

没有答案