据我所知,我可以在命令shell中执行任何操作,我可以从JNI,JNA或Runtime.getRuntime().exec(String)
开始。那么什么时候使用?
JNI / JNA是否允许我与正在运行的本机应用程序进行通信(进程间通信等),否则无法从命令shell执行?或者只是Runtime.getRuntime().exec(String)
与平台无关,而JNI / JNA要求您知道您的平台才能使用它们?
答案 0 :(得分:2)
简而言之,
Runtime.exec
(以及它的新朋友ProcessBuilder
)推出新的外部应用程序。由于每个都需要与主机操作系统和现有的本机二进制文件(无论是库还是可运行的程序)合作,因此它们都不是平台独立的。
三者都不允许与正在运行的外部应用程序进行通信。要做到这一点,您需要一个inter-process communication机制,例如,可以在共享内存,文件,管道或套接字之上实现。