int shmCreate(int id, int size)
{
int shmid
key_t key;
if ((key = ftok(".", id)) == -1) {
perror("ftok");
exit(1);
}
if ((shmid = shmget(key, size, IPC_CREAT | 0666)) == -1) {
perror("shmget");
exit(1);
}
return shmid;
}
我正在尝试编写使用shmget
的函数,其中函数将size作为参数。我一直得到无效参数错误,除了size = 1.当我传递大小不是1时我得到错误,但是当我检查ipcs -m时创建了内存段,并且它的大小为1.如何做我摆脱了这个错误?
答案 0 :(得分:0)
根据shmget(2)的手册页:
EINVAL存在给定键的段,但大小大于 该段的大小。
您无法附加已存在且尺寸较大的细分。因此,您需要先将其删除或使用其他密钥。