2013-01-08 81 views
6

我在C/C++中有一個應用程序,它將數據寫入Unix中的共享內存。現在我想通過使用Java的程序來讀取共享內存數據。使用由C++編寫的Java讀取共享內存數據

程序應讀取共享內存數據。有可能嗎?

如果可能的話,需要一個小的實現。

+1

閱讀共享內存,如果只能通過JNI工作 - 在Java中你不能這樣做。我對JNI的經驗是,一些JNI插件會使其他堅如磐石的Java虛擬機崩潰。所以也許另一個解決方案是可能 – luukes

+0

這個答案http://stackoverflow.com/a/1492536/1741542談論內存映射文件和NIO FileChannel。也許這對你也有效。 –

+0

如果您將受益於數據的持久性(即使出於調試目的),您可以考慮內存映射文件。這裏使用純Java的實現https://github.com/peter-lawrey/Java-Chronicle –

回答

5

看看this CodeProject上項目(適用於Windows):

使用內存映射文件和JNI Java和C++ 程序

或者,this庫之間進行通信:

CLIPC是一個開源的Java庫,它爲開發人員提供了進程間通信(IPC)功能可能不存在或難以在Java發行版中使用。

+0

我可以在C++中創建一個方法來讀取共享內存,然後使用JNI調用此方法嗎?這是否會有效並且不會損害性能呢? – Nikhil

+0

JNI方法應該從Java調用而不是C++。是的,您可以使用C++創建一個方法來從共享內存讀取/寫入數據。而且你也可以用JNI方法在Java中做同樣的事情。如果你做得對,不要擔心表現。 – deepmax

+0

你可以請告訴我的建議如何實現以下功能? – Nikhil