使用Java中的shmget()访问在C中创建的共享内存

时间:2014-03-16 07:48:23

标签: java c ipc

我有一个C应用程序,其中我有一个变量,其值不断变化。我需要在Java应用程序中读取此值,因为它会发生变化。

我使用" shmget()"创建了一个共享内存段。在我的C程序中,所以我有密钥来访问共享内存。

如何在Java代码中使用该密钥访问此共享内存?

C代码如下

char myc;
int myshmid;
key_t mykey;
char *myshm,*mys;

int main(int argc, char *argv[], char *envp[])
{
  mykey=5678;
  if((myshmid=shmget(mykey,SHMSZ,IPC_CREAT | 0666))<0)
  {
    perror("shmget");
    exit(1);
  }

  if((myshm=shmat(myshmid,NULL,0))==(char *) -1)
  {
    perror("shmat");
    exit(1);
  }

  mys=myshm;

1 个答案:

答案 0 :(得分:5)

你做不到。您需要以不同的方式与Java代码进行通信。

如果您的C和Java代码可以在同一个进程中运行,则可以使用JNI。否则,请使用套接字或类似的东西。