Запуск файла сценария оболочки на встроенном устройстве Android с помощью функции «Система» в Android NDK

Все

Здесь я хочу запустить .sh файл через системный вызов в Android NDK.

Я умею бегатьcp,rm Команда через системный вызов. но команда sh не работает через системный вызов.

Я также установил busy-box на Android. Я использую приведенный ниже код. Я установил все права на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.

Здесь я получаю 0 вsystem("sh ./test.sh"); но не завелtest.sh скрипт.

не могу получить вывод"Hi" на консоли.

test.sh содержит

#!/system/bin/
echo "Hi"

Если я выполняю прямую команду по приглашению, то она работает нормально и ее вывод"Hi" на консоли.

Пожалуйста, помогите мне разобраться в этом вопросе.

Спасибо

 Phil07 нояб. 2012 г., 15:43
Кроме того, к вашему сведению: ваша первая строка должна указывать на скрипт, который вы хотите запустить, поэтому должен быть установлен на#!/system/bin/sh.

Ответы на вопрос(2)

Решение Вопроса

тный вывод в / dev / null.

Согласнодокументация Вы можете перенаправить stdout и stderr в журнал (чтобы он отображался в logcat) с помощью следующих команд:

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

Теперь вы можете увидеть свое эхо вadb logcat.

 richq02 апр. 2012 г., 10:13
Вы можете запустить скрипт оболочки без перенаправления stdio, но эхо теряется.
 user108967902 апр. 2012 г., 09:21
Спасибо за ваш ответ, но без этого я не могу запустить сценарий оболочки?

sh -c /full/path/to/test.sh

 user108967928 мар. 2012 г., 18:28
Я уже пробовал это
 Nikolay Elenkov28 мар. 2012 г., 18:31
ХОРОШО. Обратите внимание, что с помощьюecho может быть не лучший способ проверить это, попробуйте использоватьtouch или что-то, что создает файл. Не совсем понятно, куда перенаправляется стандартный вывод оболочек, который вы запускаете из NDK.

Ваш ответ на вопрос