리눅스 데몬의 정의
글쓴이: declspec / 작성시간: 화, 2012/01/10 - 2:28오전
리눅스에서 백그라운드 상에서 기본으로 돌아가고 있는 프로그램을
데몬이라고 하는데, 이것에 대한 좀더 명확한 정의가 있나요?
만약 제가 아무일도 안하는 무한루프 도는 프로그램을 하나 만들고
쉘에서 실행시킬때 마지막에 & 붙여서 백그라운드로 돌리면
이것도 데몬 프로그램인가요?
윈도우 같은경우 그냥 계속 돌아가는 프로그램하고
서비스 프로그램에 확실히 차이가 있는데(프로그램 작성 방법, 구동방법등)
리눅스 데몬도 그런건지 잘 모르겠네요.
조언해주세요~
Forums:
데몬의 정의는 "사용자가 직접 제어하지 않고
데몬의 정의는
"사용자가 직접 제어하지 않고 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다."
또한
"프로세스 트리에서 init 바로 아래에 위치한다."
라고 위키에 나와있네요.
declspec 님께서 실행시킨 무한루프 백그라운드 프로그램과 어떤차이점이 있는지 아시겠죠?^^;;
감사합니다~
그렇군요~
답변 감사합니다.
그렇다면 init 바로 아래에 위치...
즉 init 의 차일드 프로세스라는 것인데
이건 어떻게 만들수 있나요?
저희가 일반적으로 gcc 로 프로그램 짜서 실행시키면
init 바로 아래에 위치하지 않죠?
자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.
음 ..
데몬을 만드는 일종의 공식 비슷한게 있습니다.
fork & exit 해서 parent 를 init 으로 바꾸고 ..
setsid 호출해서 session leader 가 되고..
다시 한 번 더 fork & exit 해서 controlling terminal 을 날리고..
stdio 를 모두 닫고 ..
chdir 로 cwd 를 / 로 바꾸고 등등 ..
그냥 daemon program 으로 검색해도 줄줄 나올겁니다.
unistd.h 에 daemon 함수가 있는지 보시고, 그냥 이거 쓰시면 됩니다. (man daemon)
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
gcc와 부모프로세스와의 상관관계는
gcc와 부모프로세스와의 상관관계는 없습니다^^;;
setpgid, setpid 등의 시스템콜을 한번 공부해보세요~
댓글 달기