커맨드 명령어를 code상에서 사용하는 방법 문의입니다.
글쓴이: ohjaesun / 작성시간: 화, 2011/02/08 - 3:59오후
shell 상에서 아래의 명령어를 실행 시키면 잘 동작 합니다.
1.
/system/bin/mm-audio-native-test -> /data/audio_test 라는 모듈 적재
2.
echo \"devctl -cmd=enable_dev -dev_id=2\" > /data/audio_test -> audio_test에 인자값으로 문자열 전달
code상에서 다음과 같이 작성 하였습니다.
1.
system("/system/bin/mm-audio-native-test"); -> 동작하고 모듈이 생성 됩니다.
2.
sprintf(stringtmp, "echo \"devctl -cmd=enable_dev -dev_id=2\" > /data/audio_test");
system(stringtmp); //커맨드창에서와 동일 방식
or
system("echo \"devctl -cmd=dev_enable -dev_id=2\" >/data/audio_test"); -> 문자열 직접 넣음
or
sprintf(stringtmp, "/data/audio_test devctl -cmd=dev_switch_rx -dev_id=2");
system(stringtmp); -> 모듈명 이후에 인자값 적음
상기 2번의 내용이 동작이 하지 않는데 해당 기능이 동작을 하게 하려면 어떠한 명령어를 사용해야 하는지요?
감사합니다.
Forums:
음 ..
echo 로 생성한 /data/audio_test 파일에 exec permission 이 없어서 그런게 아닐까 생각되네요.
strace 로 떠 보면 어디서 문제가 생겼는지 확인할 수 있을겁니다.
permission 변경은 chmod(2) 의 man page 를 읽어 보세요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
저도 그렇게 생각되는데...
system(...)에서 리턴값을 받을 수 있으니 받아서 오류 번호를 확인하는 것도 도움이 될 것 같습니다.
모두들 행복하세요~
댓글 달기