簡體   English   中英

使用Android NDK中的系統功能在Android嵌入式設備上運行Shell腳本文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM