2011-05-18 69 views
1

我想了解什么机制是从我写到Java供用户界面使用的C++守护进程获取字符串。我会发布什么,我想要的图像,然后继续这个问题后:std :: strings队列需要通过JNI的共享内存?

enter image description here

有迹象表明,我设想这里两个问题:

1)信号必须提供给图书馆。在Windows中,这可以通过命名的信号量来完成,并可以访问它的句柄。在Linux中,我一直指向在共享内存中使用信号量,并通过共享内存的密钥使进程意识到它。这对我来说很模糊,但是这个概念是否可以同步Java和守护进程?

2)我必须将队列放在共享内存中才能使???链接在上面的图表中工作吗?可以并且应该将队列驻留在.so?

所以这些是我的顾虑。我热爱并欢迎任何和所有的帮助,挑战和理智的恳求,并会尽我所能提供所有额外必要的信息。提前致谢。

+0

使用套接字(可能是UNIX域)执行此任务可能会容易得多,而忘记了JNI。 – 2011-05-18 23:24:06

+0

或管道,如果你对它们更舒服。 – 2011-05-18 23:44:08

+0

我在嵌入式环境中使用控制卡管理扩展卡的多个telnet接口。 Java层被添加为从基于浏览器的UI获取数据到用C++编写的底层硬件控制软件的手段。它可能不够高雅,但我进入了这个项目的后期设计。如果可能很困难,是否可行? – 2011-05-19 05:14:02

回答

0

您正在一个单独的进程中运行这两个应用程序,在vanilla Linux中,这意味着您无法直接通过内存在这些进程之间进行通信。 Java VM是一个进程,C++守护进程是一个进程。它位于由内存管理器(MMU)加密的单独内存位置。所以没有办法获得内存访问。

谷歌在“内部流程沟通”,如果你愿意。我更喜欢使用socketpair来进行双向父 - 母通信。