Используйте что-то вроде этого, чтобы перенаправить stderr в канал. Попросите читателя на другой стороне трубы написать в logcat:
extern "C" void Java_com_test_yourApp_yourJavaClass_nativePipeSTDERRToLogcat(JNIEnv* env, jclass cls, jobject obj)
{
int pipes[2];
pipe(pipes);
dup2(pipes[1], STDERR_FILENO);
FILE *inputFile = fdopen(pipes[0], "r");
char readBuffer[256];
while (1) {
fgets(readBuffer, sizeof(readBuffer), inputFile);
__android_log_write(2, "stderr", readBuffer);
}
}
Вы захотите запустить это в своем собственном потоке. Я раскручиваю поток в Java, а затем поток Java вызывает этот код NDK следующим образом:
new Thread() {
public void run() {
nativePipeSTDERRToLogcat();
}
}.start();