int shmid;
int* locat;
//create shared memory segment
shmid = shmget(6666, size, 0666);
if (shmid < 0) {
perror("shmget");
exit(1);
}
locat = (int *) shmat(shmid, NULL, 0);
if (locat == (int *) -1) {
perror("shmat");
exit(1);
}
我正在设置共享内存,但我一直收到此错误:shmget: No such file or directory
这段代码工作正常,不知道为什么会出现这种情况。
答案 0 :(得分:1)
IPC_CREAT
创建新细分。如果未使用此标记,则
shmget()
将找到与密钥关联的细分,并检查用户是否有权访问该细分。
您必须在IPC_CREAT
来电
shmget
shmid = shmget(6666, size, IPC_CREAT | 0666);
您还可以使用IPC_EXCL
确保新创建细分
IPC_EXCL
此标志与
IPC_CREAT
一起使用以确保此调用 创建细分。如果该段已存在,则 呼叫失败。
答案 1 :(得分:0)
有两件事:
就像
一样shmget(6666 , size , 0666|IPC_CREAT);