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
这段代码运行良好,不知道为什么现在会发生这种情况。
发布于 2016-12-02 06:59:54
就像那个人说的
IPC_CREAT 创建一个新的段。如果不使用此标志,则
shmget()将找到与键关联的段,并检查用户是否拥有访问该段的权限。
必须将IPC_CREAT添加到shmget调用中
shmid = shmget(6666, size, IPC_CREAT | 0666);您还可以使用IPC_EXCL确保新创建的段。
IPC_EXCL 此标志与
IPC_CREAT一起使用,以确保此调用创建段。如果段已经存在,则调用失败。
发布于 2017-10-20 09:03:54
有两件事:
就像
shmget(6666 , size , 0666|IPC_CREAT);https://stackoverflow.com/questions/40926336
复制相似问题