可能是重复问题:
不同语言/操作系统之间的进程间通信
我需要在Java和C++进程之间进行进程间通信,由于它们是不同的进程,因此我不能使用JNI。 我考虑使用套接字通信,但除了套接字通信以外还有其他解决方案吗?哪个更好、更快?
可能是重复问题:
不同语言/操作系统之间的进程间通信
我需要在Java和C++进程之间进行进程间通信,由于它们是不同的进程,因此我不能使用JNI。 我考虑使用套接字通信,但除了套接字通信以外还有其他解决方案吗?哪个更好、更快?
标准输入和输出通道。 (+)易于实现 (+)快速 (+)易于调试 (-)无法附加/分离到/从已运行的进程
命名管道。 (+)快速 (-)依赖于系统
IPC 系统,例如 DBus。 (-)依赖于系统
TCP 套接字通信。 (-)较慢,但应该足够快 (+)可以轻松扩展为远程通信 (+)易于调试 (-)应用程序或相同应用程序的实例之间可能存在 TCP 端口冲突。
mmap
和munmap
;在Windows下,你需要使用CreateFileMapping
、MapViewOfFile
和UnmapViewOfFile
。 - James Kanze有许多IPC方法可供选择,选择哪种方法取决于您想要做什么。
除此之外,还有信号量、共享内存和管道等方法。但这些方法都不容易理解和实现,尽管我相信应该有一些库可以用于此,也可以在操作系统层面上实现。