Run Shell Script file On Android Embedded Device using System function in Android NDK

℡╲_俬逩灬. 提交于 2020-01-22 16:27:31

问题


All

Here i want to run .sh file via system call in android NDK.

I able to run cp,rm command via system call. but sh command is not working via system call.

I also installed busy-box on android.I am using below code.I set all permission on 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);

}

Output :

 result is cp 0.
 result of test.sh is 0.

Here i am getting 0 in system("sh ./test.sh"); but not started the test.sh script.

cant get output "Hi" on console.

test.sh contains

#!/system/bin/
echo "Hi"

If i am executing direct command on prompt than its working fine and its given output "Hi" on console.

Please Help me to figure out this issue.

Thanks


回答1:


Where are you expecting to see the "echo"? By default, android sends stdout to /dev/null.

According to the documentation you can redirect stdout and stderr to the log (so it will show up in logcat) using the following commands:

$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start

Now you may see your echo in adb logcat.




回答2:


You might want to try sh -c /full/path/to/test.sh



来源:https://stackoverflow.com/questions/9909995/run-shell-script-file-on-android-embedded-device-using-system-function-in-androi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!