gpt4 book ai didi

java - 如何将 C 实现的 JNI( native )方法的输出返回到 Java

转载 作者:行者123 更新时间:2023-11-30 15:21:08 25 4
gpt4 key购买 nike

我有一个 C 语言的第三方 native 子例程,它想要将其结果输出到文件描述符。我可以通过将文件描述符传递给 C 子例程来选择文件描述符(包括标准输出、stdout,如果我愿意),但我不能将其输出到文件描述符以外的任何内容。我创建了自己的 C 代码来充当 Java 和此 C 子例程之间的接口(interface)。

如何将 C 子例程的输出直接返回到 Java...也就是说,无需将其写入文件然后读回?

输出通常在 20-30k 左右,并且是人类可读的纯文本,因此它不是很大,并且对我的用户有意义。我想在输出时在 Java 控制台(如窗口)中向用户显示输出。这可能吗?又如何?

我看到 Java 有一个 FileDescriptor 对象...这是解决方案的一部分吗?我不想将我的 C fd 插入 FileDescriptor 对象(使用 FileDescriptor 的私有(private)字段),如下所述:http://www.kfu.com/~nsayer/Java/jni-filedesc.html

我想使用 Java 最佳实践和习惯用法来做到这一点。

最佳答案

如果您使用的是类 Unix 系统,请考虑创建一个命名管道,然后在 native 代码和 Java 代码中打开它,就像打开普通文件一样。

这与使用临时文件类似,只不过数据直接从写入器发送到读取器,而不存储在磁盘上。

缺点是您仍然需要管理临时命名管道。

关于java - 如何将 C 实现的 JNI( native )方法的输出返回到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com