ORIGINAL:
我一直在尝试使用适用于Linux的Windows子系统(在Windows上使用Ubuntu上的Bash)实现基本的共享内存程序。这是我写的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define KEY 1374
int shmid;
char *dataPtr;
int main (void) {
shmid = shmget((key_t)KEY,1024, IPC_CREAT | 0666);
dataPtr = shmat(shmid, (void*)0,0);
if(dataPtr == (char*)(-1))
perror("shmat error");
strcpy(dataPtr,"test");
sleep(10);
shmdt(dataPtr);
shmctl(shmid, IPC_RMID, NULL);
}
我使用GCC编译它没有任何错误或警告,但当我尝试运行它时,我收到此错误消息:
shmat错误:函数未实现
分段错误(核心转储)
我试图找到这个错误的底部,但是当我用谷歌搜索它时,我 literally got nothing
所以问题是:我是否非常简单地搞砸了一些东西,或者是否可能在“Windows上的Ubuntu”上没有实现共享内存系统?
修改
我试图在我的教师的Linux服务器上运行我的代码,它运行正常。显然,问题在于Windows系统上的Ubuntu上的Bash。共享内存系统可能根本没有实现。