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 = 1之外,我一直都有无效的参数错误。当我传递大小而不是1时,我得到了错误,但是内存段是在我检查ipcs -m时创建的,它的大小是1。如何消除这个错误?
发布于 2017-05-04 01:17:06
根据shmget(2)的手册页:
EINVAL给定键的段存在,但大小大于该段的大小。
您不能附加已存在较大大小的区段。所以您需要先删除它,或者使用另一个键。
https://stackoverflow.com/questions/43743882
复制相似问题