Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java中的shmget()访问在C中创建的共享内存_Java_C_Ipc - Fatal编程技术网

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

使用Java中的shmget()访问在C中创建的共享内存,java,c,ipc,Java,C,Ipc,我有一个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((myshmi

我有一个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;
char-myc;
int myshmid;
密钥\u t mykey;
char*myshm,*mys;
int main(int argc,char*argv[],char*envp[]
{
mykey=5678;

如果((myshmid=shmget(mykey,SHMSZ,IPC|u CREAT | 0666))您不能。您将需要以不同的方式与Java代码通信


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

请编辑您的问题以添加代码(不要忘记每行至少以4个空格开头)编辑问题:请帮忙解释一下,我怎么才能使用JNI?不,有太多的解释。在互联网上搜索教程。JNI是你用来写代码>原生< /代码>方法的C或C++,如果你曾经想知道<代码>原生< /代码>是如何工作的。谢谢你的帮助。