【发布时间】:2012-03-28 14:46:50
【问题描述】:
全部
这里我想通过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"。
请帮我解决这个问题。
谢谢
【问题讨论】:
-
另外,仅供参考:您的第一行应指向您要运行的脚本,因此应设置为
#!/system/bin/sh。
标签: android c android-ndk