使用Java中的shmget()访问在C中创建的共享内存
我有一个C应用程序,其中有一个值不断变化的变量。我需要在Java应用程序更改时读取该值 我已经在我的C程序中使用“shmget()”创建了一个共享内存段,因此我拥有访问共享内存的密钥 如何在Java代码中使用该键访问该共享内存 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
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++,如果你曾经想知道<代码>原生< /代码>是如何工作的。谢谢你的帮助。