gpt4 book ai didi

java - 如何使用 JNI 将终端输出从 C 程序重定向到 System.out?

转载 作者:搜寻专家 更新时间:2023-11-01 01:39:30 24 4
gpt4 key购买 nike

我正在通过打印到标准输出的 JNI 调用 C 库。如何将此输出重定向到 System.out?

最佳答案

System.out stdout。您是否遇到了一些更根本的问题(也许是混淆了输出?)。

由于另一位成员也提到了最后一点 - 我应该进一步解释:

System.outstdout 都对应于文件描述符#1。

然而 Java 的 OutputStream(和派生类)和 C 的 stdio 库都有自己(独立的)缓冲机制,以减少对底层 write 系统调用。仅仅因为您调用了 printf 或类似的方法,不能保证您的输出会立即出现。

因为这些缓冲方法是独立的,Java 代码中的输出(理论上)可能会混淆或以其他方式出现相对于 C 代码输出的乱序。

如果这是一个问题,您应该安排在调用 JNI 函数之前调用 System.out.flush(),并在您的 C 函数中(如果它使用 stdio而不是低级别的 write 调用)你应该在返回之前调用 fflush(stdout)

关于java - 如何使用 JNI 将终端输出从 C 程序重定向到 System.out?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/290743/

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