안드로이드 어플리케이션으로 /dev 내 장치파일을 접근하기 위해서는 어떻게 해야 될까요?
글쓴이: lmk378 / 작성시간: 목, 2010/06/03 - 11:19오후
안드로이드 어플리케이션으로 /dev 내 장치파일을 접근하기 위해서는 어떻게 해야 될까요?
현재 안드로이드 ndk를 사용해 c로 /dev/tty 장치파일을 접근하기 위해
fd = open("/dev/tty", O_RDWR)
이런식으로 작성해서 하는데 fd가 정상적으로 읽히지 않습니다.(-1이 나옵니다.)
흠...일단 소프트웨어적인 권한문제는 아닌것 같습니다. /dev 또는 /dev/tty 모두 666으로 바꾸었는데도 불구하고
같은 애러가 발생하니까요...
어디서 줏어들은 이야기로는 안드로이드에 하드웨어적인 권한과 소프트웨어적인 권한이 있다고 들었습니다.
하드웨어적인 권한은 init 프로세스 자체에서 어플리케이션단에서 /dev에 접근시
원천적으로 접근을 못하도록 막아노았다고 하더군요. (정확한 정보는 아닙니다.)
때문에 init.c 파일을 수정해 권한설정 부분을 바꾸면 된다는 글을 읽었습니다.
하지만 init.c에서 어느부분에 권한을 설정하는지 잘 모르겠습니다.
divice_init 함수를 타고 들어가다 보면 openat 함수에서 mode_t = 0; 이라고 되어있는데
혹시 이부분이 권한을 설정하는 부분일까요??
이런 방법이 아니더라도 안드로이드 어플리케이션단에서 /dev/tty 와 같은 장치파일에 엑세스 하는 다른방법 아시는분 계신가요??
답변 부탁드립니다. 소중한 하루 되세요^_^
Forums:
그때 errno 값을
그때 errno 값을 보시면 문제의 범위를 좁히실 수 있을 텐데요. (자세한 내용은 man open) 의외로 권한 문제일 수도 있습니다. /dev/tty 파일의 권한을 주었다해도 장치 파일이므로 tty 드라이버의 open 함수에서 user process의 권한을 체크하는 어떤 또다른 동작을 시도했을 수 있죠.
init.rc 에서
init.rc 에서
각 어플마다
각 어플마다 사용자를 설정할 수 있고, 권한을 줄 수 있습니다. init.rc or init.xxx.rc를 체크하세요.
댓글 달기