如何在C中运行/控制Java程序?

时间:2010-09-08 19:50:40

标签: java c system-verilog

我在ASIC模拟器中运行System Verilog。 SV有一个导入/导出机制,用于从SV调用C函数,以及从C中调用SV函数。

我想将仿真中的realtime-ish(非常慢的流)数据发送到我将用Java编写的图表程序。通过模拟器/ C程序定期更新来调用Java的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

快速浏览一下:http://java.sun.com/docs/books/jni/html/invoke.html,...

然后考虑一下:

最简单的方法是将数据写入文件,然后编写java程序 随着文件的增长从文件中读取。请参阅此答案:Java IO implementation of unix/linux "tail -f"

单独启动它们,或使用system()从插件启动java程序,将文件名作为参数传递。

答案 1 :(得分:2)

最好的方法是让Java程序在TCP套接字上侦听来自可以发送它们的C程序的更新。让C程序在开始时连接到Java程序,并且只要有更新,它就可以沿着连接的套接字传递它。然后,Java程序可以获取数据并更新它需要更新的任何内容。

这也有一个很好的优势,即两个程序甚至不必在同一台机器上运行。

答案 2 :(得分:1)

java native interface允许C程序与java对象进行交互。但是你需要编写一些C代码才能将它集成到ASIC模拟器中。