【问题标题】:JNI stdout is not print to the consoleJNI 标准输出不打印到控制台
【发布时间】:2015-05-06 06:20:29
【问题描述】:

我使用 JNI 是因为我需要一些 c 库。 我的问题是并非所有内容都打印到标准输出。 我知道我能做到

puts("test");
fflush(stdout);

我自己。但我的问题是 c 库有一个调试功能,它打印到标准输出,因此在控制台中不可见。我该如何解决这个问题?

【问题讨论】:

    标签: java c java-native-interface stdout


    【解决方案1】:

    您无法写入标准输出,因为 JNI 从 Java 代码中运行本机代码,并且未附加到标准输出。 您可以使用以下函数直接写入控制台设备。

    void console_printf(const char *fmt,...)
    {
        int fd = open("/dev/console", O_WRONLY);
        char buffer[1000];
        if (fd < 0)
            return;
    
        va_list ap;
        va_start(ap, fmt);
        vsprintf(buffer, fmt, ap);
        va_end(ap);
    
        write(fd, buffer, strlen(buffer));
        close(fd);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 2013-07-06
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多