gpt4 book ai didi

android - 使用 NDK 捕获标准输出/标准错误

转载 作者:可可西里 更新时间:2023-11-01 18:45:39 26 4
gpt4 key购买 nike

我正在移植一些现有的 C 代码以在 Android 上运行。此 C 代码将大量输出写入 stdout/stderr。我需要在内存缓冲区或文件中捕获此输出,以便我可以通过电子邮件发送或以其他方式共享。

我怎样才能实现这一点,最好是不修改现有的 C 代码?

注意:这个问题不是关于将输出重定向到 adb 或 logcat;我需要在设备上本地缓冲输出。我知道以下问题似乎没有解决我的查询:

最佳答案

使用类似这样的方法将 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();

关于android - 使用 NDK 捕获标准输出/标准错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com