android - 使用 Android NDK 中的系统函数在 Android 嵌入式设备上运行 Shell 脚本文件

标签 android c android-ndk

全部

这里我想在 android NDK 中通过系统调用运行 .sh 文件。

我可以通过系统调用运行 cp,rm 命令。但是 sh 命令不能通过系统调用工作。

我还在 android 上安装了 busy-box。我正在使用下面的代码。我在 test.sh 上设置了所有权限。

代码:

#include <stdlib.h>
#include <stdio.h>
#include <android/log.h>
#include <jni.h>

#define LOG_TAG "Demo"

#define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)


void Java_com_ndkdemo_NDKdemoActivity_systemcall(JNIEnv * env, jobject obj) {

    int result;

    result = system("cp /mnt/sdcard/test /Download");

    LOGD("result is cp %d", result);

    result = system("sh ./test.sh");

    LOGD("result of test.sh is %d", result);

}

输出:

 result is cp 0.
 result of test.sh is 0.

我在 system("sh ./test.sh"); 中得到 0 但没有启动 test.sh 脚本。

无法在控制台上获得输出 "Hi"

test.sh 包含

#!/system/bin/
echo "Hi"

如果我在提示符下执行直接命令而不是它的工作正常和它在控制台上的给定输出 "Hi"

请帮我解决这个问题。

谢谢

最佳答案

您希望在哪里看到“回声”?默认情况下,android 将 stdout 发送到/dev/null。

根据documentation您可以使用以下命令将 stdout 和 stderr 重定向到日志(因此它会显示在 logcat 中):

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start

现在您可以在 adb logcat 中看到您的回显。

关于android - 使用 Android NDK 中的系统函数在 Android 嵌入式设备上运行 Shell 脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9909995/

相关文章:

android - 在 Android 中只启用混淆而不启用代码压缩?

android - Bluez 架构 : Explain this Architecture

在 shell 中重定向输入和输出的代码

c - NDK-构建 : make: *** No rule to make target Error with Libpcap

android - CollapsingToolbarLayout 中的 ImageView 未覆盖全高?

android - 使用服务和 Singleton SQliteOpenHelper 进行数据隔离

Android NDK 包含 Eigen

Android caffe 搭建demo 显示错误

android - 通过 adb 将 APK 安装到远程设备 - INSTALL_FAILED_UPDATE_INCOMPATIBLE

c++ - 类依赖工具