시스템 함수를 사용하여 "rndc reload"명령어를 주려고 하였습니다
터미널에서는 명령어가 잘 먹혀서 당연히 될거라고 생각하고
실행했는데 "sh: rndc: command not found"라고 나옵니다
rndc라는건 dns의 zone파일을 새로고침 해주는건데요..
system명령어로 할 수 없는 명령어가 있는것인지...
도움 부탁드립니다
첫째, shell에서 alias로 등록한 명령 이름인 경우. 당연히 동작하지 않습니다. alias가 가리키는 것을 직접 실행해야 합니다.
둘째, executable binary가 아닌, shell script인 경우, 이 경우 system(3)에 명령을 직접 주는 대신 sh의 인자로 주어서 해결할 수 있습니다. 예를 들어, script 이름이 foo.sh라면 system("foo.sh") 대신 system("/bin/sh -c foo.sh")로 실행할 수 있습니다. 참고로 glibc에서는 기본적으로 system()의 인자를 /bin/sh로 넘겨서 동작합니다.
시스템 함수를 사용하여 "rndc reload"명령어를 주려고 하였습니다
터미널에서는 명령어가 잘 먹혀서 당연히 될거라고 생각하고
실행했는데 "sh: rndc: command not found"라고 나옵니다
rndc라는건 dns의 zone파일을 새로고침 해주는건데요..
system명령어로 할 수 없는 명령어가 있는것인지...
도움 부탁드립니다
몇가지 가능성이 있습니다.첫째, shell에서 alias로 등록한
몇가지 가능성이 있습니다.
첫째, shell에서 alias로 등록한 명령 이름인 경우. 당연히 동작하지 않습니다. alias가 가리키는 것을 직접 실행해야 합니다.
둘째, executable binary가 아닌, shell script인 경우, 이 경우 system(3)에 명령을 직접 주는 대신 sh의 인자로 주어서 해결할 수 있습니다. 예를 들어, script 이름이 foo.sh라면 system("foo.sh") 대신 system("/bin/sh -c foo.sh")로 실행할 수 있습니다. 참고로 glibc에서는 기본적으로 system()의 인자를 /bin/sh로 넘겨서 동작합니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
아.. 감사합니다^^
^^
Re: 시스템 함수 사용에서...
fullpath 를 넣어서 사용해보세요...
"/usr/bin/rndc reload" 식으로요...
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
댓글 달기