我使用JNI因为我需要一些c库。 我的问题是并非所有都打印到标准输出。 我知道我可以做到
puts("test");
fflush(stdout);
我自己。但我的问题是c库有一个调试功能,它打印到stdout,因此在控制台中不可见。我该如何解决这个问题?
答案 0 :(得分:0)
您无法写入stdout,因为JNI从Java代码中运行本机代码,并且未附加到stdout。 您可以使用以下函数直接写入控制台设备。
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);
}