안녕하세요 ^^

소켓 관련 리눅스 코드(이 후 부터는 A라고 하겠습니다 ^^;;)를 ndk를 이용하여 컴파일 하여 이를 안드로이드 어플에서 getRuntime().exec()을 이용하여 호출 하고자 합니다.

그런데, A를 adb를 이용하여 안드로이드 상에서 직접 실행 시키면 동작을 잘 하는데, 안드로이드 어플에서 getRuntime().exec()를 이용하여 호출을 하면 동작을 안하네요 ㅡㅡ;;

좀 살펴 봤더니 다음과 같은 문제가 있는것으로 의심이 됩니다.

A는 소켓 관련 프로그램인데, NIC에 바인딩하는 방식이 SO_BINDTODEVICE 옵션입니다.
root권한이 있어야 사용가능한 옵션인데요, 물론 제가 테스트하는 단말은 직접 android를 포팅한 단말이기에 adb를 통하여 단말에 접속한 뒤 콘솔에서 A를 실행 시키면 동작을 잘 하더군요.

그런데... 왜 안드로이드 어플에서 getRuntime().exec()를 통해서 실행만 시키면 SO_BINDTODEVICE 옵션을 줄때 리턴값이 계속 -1로 떨어 지네요. 왜 그런지를 모르겠습니다. ㅡㅡ

안드로이드 어플에서 getRuntime().exec()을 이용하여 데몬 형태의 프로그램을 실행 시키면 이는 VM을 거쳐서 실행되는건지, 아니면 무언가 다른 이유가 있는건지도 모르겠네요... ㅎㅎ

혹시 경험해 보셨거나 조언 주실 수 있는분 부탁 드립니다.