我有一个像这样的shell脚本,
#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
现在这个脚本位于/ test /目录中。 我从一个c函数调用这个脚本,这个函数是通过jni从android应用程序调用的。 我正在使用此函数在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”给予许可,但仍然没有用。
任何帮助将不胜感激。 谢谢。
答案 0 :(得分:1)
如果您的shell解释器是/system/bin/sh
,那么:
对于以shebang开头的shell脚本,请将其设为#!/system/bin/sh
尝试使用解释器路径本身而不是.
字符来运行脚本