[英]Run Shell Script file On Android Embedded Device using System function in 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 system("sh ./test.sh");
但沒有啟動test.sh
腳本。
無法在控制台上輸出"Hi"
。
test.sh包含
#!/system/bin/
echo "Hi"
如果我在提示符上執行直接命令而不是其工作正常,並在控制台上給出輸出"Hi"
。
請幫我解決這個問題。
謝謝
你期望在哪里看到“回聲”? 默認情況下,android將stdout發送到/ dev / null。
根據文檔,您可以使用以下命令將stdout和stderr重定向到日志(因此它將顯示在logcat中):
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
現在你可以在adb logcat
看到你的回聲。
您可能想嘗試sh -c /full/path/to/test.sh
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.