static int sony_get_bt_hostaddr(struct sony_sc *sc)
{
int ret;
char * envp[] = { "HOME=/", NULL };
char * argv[] = { "system/bin/sh", "-c", "su", "'/vendor/bin/btnvtool -x'", "&>", "/sdcard/bthostaddr.txt", NULL };
ret = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);
printk("sony_get_bt_hostaddr %x", ret);
return 0;
}
尝试通过 获取 sh 命令输出call_usermodehelper()
,返回值为 0,大概是返回的正确结果,但似乎只是停在"'/vendor/bin/btnvtool -x'"
,argv 的最后部分"&>", "/sdcard/bthostaddr.txt"
根本不执行,在 找不到 txt 文件/sdcard/bthostaddr.txt
。
当我在终端中输入命令时,完全没有问题system/bin/sh -c su '/vendor/bin/btnvtool -x' &> /sdcard/bthostaddr.txt
,文件将被创建,结果就btnvtool -x
在那里
(' '
需要/vendor/bin/btnvtool -x
或不会在创建的文件中得到结果,所以我只是在我的代码中模仿它)。
我的代码实际上有什么问题?或者是否有任何替代方法可以获取准确的输出作为回报,而不仅仅是 0/stores 在文件中?
(ps:代码运行在android环境仅供参考)