使用 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
它来评估它,但显然不是。我应该如何从共享内存中读取?朝着正确的方向前进会很棒。谢谢!
编辑:
another.anon.coward 的输出:
$ ./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