是否有一个“最佳实践”通过java访问操作系统中的另一个进程?

StackOverflow https://stackoverflow.com/questions/161529

  •  03-07-2019
  •  | 
  •  

我一直在阅读Skype4Java(skype的java api)并注意到他们使用jni来访问Skype客户端。

直观地说,我假设java中已经有一个标准库,它具有操作系统敏感的jni实现来访问其他进程。我开始寻找一个,但找不到它。

有这样的图书馆吗?如果没有,是否有最佳实践来访问操作系统中的另一个进程,不一定是skype客户端?

有帮助吗?

解决方案

我认为您可能需要定义“访问”对您意味着什么。如果你在谈论普通的过程间通信,那么套接字或JNI确实是你最好的选择。

Garth关于使用内存映射文件的评论很有意思 - 我已经多次在C应用程序之间使用MMF和虚拟文件用于IPC,但我从未想到Java的MMF实现可能与本机OS虚拟文件系统兼容。这些类型的虚拟文件通常需要非常简单的设置,所以如果它可以工作我会感到惊讶......

所有人都说,除非你在应用程序之间抽取大量数据,否则使用套接字可能是最普遍和有效的方法。确保考虑主机操作系统和Java VM之间的字节顺序: - )

其他提示

从Java 1.4开始,您可以使用内存映射文件与另一个进程交换任意信息。有关详细信息,请参阅java.nio.MappedByteBuffer。

这不是你想要的,但可能会有很大的帮助: Java java.net上的Native Access 项目。

别忘了插座......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top