All
这里我想通过android NDK中的系统调用运行.sh文件。
我能跑cp,rm
通过系统调用命令。但 sh 命令无法通过系统调用运行。
我还在 android 上安装 busybox。我使用下面的代码。我设置了所有权限test.sh
.
Code :
#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.
在这里我得到了 0system("sh ./test.sh");
但还没有开始test.sh
script.
无法获得输出"Hi"
在控制台上。
test.sh 包含
#!/system/bin/
echo "Hi"
如果我在提示符下执行直接命令,那么它的工作正常及其给定的输出"Hi"
在控制台上。
请帮我解决这个问题。
Thanks
您希望在哪里看到“回声”?默认情况下,android 将 stdout 发送到 /dev/null。
根据文档 http://developer.android.com/guide/developing/tools/adb.html#stdout您可以使用以下命令将 stdout 和 stderr 重定向到日志(因此它将显示在 logcat 中):
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
现在你可能会看到你的回声adb logcat
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)