2
我有这样一个shell脚本,运行shell脚本从Android应用程序
#Script name : test.sh
mkdir /boot
mount -t vfat /dev/block/mmcblk0p1 /boot
cp file1 /boot
umount /boot
mkdir -p /test1/test2/test3
cp file2 /test1/test2
cp file3 /test1/test2/test3
STATUS=TRUE
现在这个脚本位于/测试/目录下。 我从通过jni从android应用程序调用的c函数调用此脚本。 我使用这个功能把我的脚本在C现在
void Java_com_ndkdemo_NDKdemoActivity_systemcall(JNIEnv * env, jobject obj) {
fp = popen(". /test/./test.sh; echo STATUS=$STATUS","r");
while (fgets(buffer, sizeof (buffer), fp) != 0)
{
LOGD("%s",buffer);
}
}
当过我打电话从我的活动这个系统调用的功能,它是不能执行的脚本test.sh 相同的脚本中的命令如果我正在编译一个正常的C源代码的二进制文件,并在控制台上执行该二进制文件工作。我试图给“chmod 777 /test/test.sh”许可,但它仍然不起作用。
任何帮助将不胜感激。 谢谢。
Yup也尝试过这些东西..但仍然没有工作,顺便说一句,如果我将使用解释器而不是如何使用解释器,会有什么区别。字符?我正在使用这个。因为我需要当前控制台中的STATUS变量,其他明智的我将无法使用它。 – user1310041
为什么你需要STATUS变量?也许你可以把它放在你的test.sh中并简化你的命令,以尽量减少问题出现的地方。 – gfour