我试图附加现有的共享内存段,但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从不递增。