我正在尝试使用C语言设置共享内存。我的代码如下:
key_t key = ftok("SomeString", 1);
static int *sharedval;
int shmid = shmget(key, sizeof(int), S_IRUSR | S_IWUSR); // less permissions
sharedval = (int *) shmat(shmid, NULL, 0);
*sharedval = 0;
然而,当运行最后一行时,我遇到了分段错误。在调试时,我可以打印“sharedval”,并获得一个内存地址,可能是我获取的内存中的位置。因此,我认为我所要做的就是使用
*sharedval
来评估它,但显然不是这样。我应该如何从共享内存中读取?指点一下方向将是很棒的。谢谢!$ ./a.out
ftok: No such file or directory
shmget: No such file or directory
Trying shmget with IPC_CREAT
shmget success
shmat success
Segmentation fault: 11
shmget
和shmat
都可能失败。 - Matshmget()
和shmat()
的返回值是什么? - chrisaycock