【问题标题】:Accessing shared memory created in C using shmget() from Java使用 Java 中的 shmget() 访问在 C 中创建的共享内存
【发布时间】:2014-04-21 11:26:33
【问题描述】:

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

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

如何在 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;

【问题讨论】:

  • 请编辑您的问题以添加代码(不要忘记在每行开头至少 4 个空格)
  • 编辑了问题....任何帮助表示赞赏

标签: java c ipc


【解决方案1】:

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

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

【讨论】:

  • 你能解释一下我如何使用JNI吗?
  • 不,要解释的太多了。在 Internet 上搜索教程。如果您想知道 native 的工作原理,JNI 就是您用来在 C 或 C++ 中编写 native 方法的工具。
  • 感谢 Imbibis 的帮助。
猜你喜欢
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
  • 2015-05-22
  • 2021-11-26
  • 2014-02-14
  • 2021-05-11
相关资源
最近更新 更多