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으로 반환되는 것이 올바른 결과인 것으로 추정되지만 그냥 stop인 것 같고 "'/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 환경에서 실행됩니다.)