2023-01-20 268
我正在通过JNI调用C库,该库将打印到Stdout.如何将此输出重定向到System.out?
System.out IS stdout.您还有一些您遇到的基本问题(也许混合了输出?).
由于另一个成员也提到了最后一点 – 我应该进一步解释:
System.out和stdout都对应于文件描述符#1.
但是,Java的OutputStream(和派生类)和C的stdio库都有其自己的(独立)缓冲机制,以减少对基础write系统调用的调用数量.仅仅因为您打电话给printf或类似,就不能保证您的输出会直接出现.
由于这些缓冲方法是独立的,因此(理论上)在Java代码中的输出可能会混合在一起,或者相对于C代码的输出而出现的阶段.
.
如果这是一个问题,则应在调用JNI函数之前和C函数(如果使用stdio而不是低级write呼叫)之前安排System.out.flush(),则应调用返回之前.
正如Alnitak所写,您应该打印到Stdout.您应该注意,消息可能需要一段时间才能出现在屏幕上.如果计时很重要,则在打印到Stdout时,应该打印带有消息的时间戳.
以上所述是小编给大家介绍的如何将终端输出从C程序重定向到System.out使用JNI?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26104.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态