全部
这里我想在 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/