【发布时间】:2015-05-06 06:20:29
【问题描述】:
我使用 JNI 是因为我需要一些 c 库。 我的问题是并非所有内容都打印到标准输出。 我知道我能做到
puts("test");
fflush(stdout);
我自己。但我的问题是 c 库有一个调试功能,它打印到标准输出,因此在控制台中不可见。我该如何解决这个问题?
【问题讨论】:
标签: java c java-native-interface stdout
我使用 JNI 是因为我需要一些 c 库。 我的问题是并非所有内容都打印到标准输出。 我知道我能做到
puts("test");
fflush(stdout);
我自己。但我的问题是 c 库有一个调试功能,它打印到标准输出,因此在控制台中不可见。我该如何解决这个问题?
【问题讨论】:
标签: java c java-native-interface stdout
您无法写入标准输出,因为 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);
}
【讨论】: