使用Android NDK中的系统function在Android嵌入式设备上运行Shell脚本文件

所有

在这里,我想通过android NDK中的系统调用运行.sh文件。

我可以通过系统调用运行cp,rm命令。 但是sh命令不能通过系统调用工作。

我还在android上安装了busy-box。我正在使用下面的代码。我在test.sh上设置了所有权限。

代码:

 #include  #include  #include  #include  #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