데몬(daemon) 실행에 대해서 질문 있습니다

라스코니의 이미지

데몬(daemon) 생성에 대해서는 서칭을 통해 어느 정도 알았습니다.

그런데 어떻게 데몬에게 할 일을 가르쳐 줄수 있는지 모르겠네요.

데몬은 백그라운드로 돌면서 주기적으로 일을 할 수 있도록 할 수 있는것 같은데요... 어떻게 하면 데몬이 해야 하는 일을 데몬에게 알려줄 수 있나요? 인터넷을 서칭해도 이런 건 찾기가 어렵네요.

만약 제가 print_name 이라는 데몬을 만들어서 띄웠다면

어떻게 하면 아래처럼

$> ????? "홍길동"

I am Daemon of print_name, and your input is 홍길동

$>

동작하게 할 수 있을까요?

eminency의 이미지

실행하자마자 print 하면 되죠...-_-;

데몬의 용도를 잘못 이해하고 계신 거 같습니다.
저런 프로그램을 굳이 데몬으로 만들 필요가 있는지 모르겠네요.

데몬의 용도를 예로 들면 특정 시간에 동작하는 cron 데몬이나 네트웍 요청이 있을 때 반응하는 네트웍 데몬들이(ssh라든가 ftp등) 일반적인 예입니다.
끝나는 시점이 정해져 있지 않다고 할까요...

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5

라스코니의 이미지

위는 하나의 일 예를 들은 것이고요. "홍길동" "임꺽정" 등 미리 정해져 있지 않는 일을 시킬려고 하는 것이죠.

그리고 위 데몬이 CORBA 같은 middleware에 붙어 있거나 RPC 와 연동되게 할 수도 있거든요.

그래서 원격이 아닌 유저가 데몬에게 input을 줄 때에는 어떻게 해야하나 여쭙는 겁니다.

middleware 의 경우에는 일정 값을 주기적으로 모니터링하거나 해서 원격 신호와 반응을 할수도 있고, 그 반응 결과를 줄수도 있겠지만 로컬의 경우에는 어떻게 해야 하는지 모르겠네요.

유저는 데몬에게 본격적인 하도록 특정 정보만 줄수 있으면 되거든요. main(int argv, char *argc[]) 같은 매개 변수 같은 식으로요.

eminency의 이미지

밑에 다른 분이 답글을 달아주셨군요.

좀 더 구체적으로 말씀드리면 pipe를 쓰든지 unix domain socket라든가 메시지 큐라든가 등등의 방법으로 가능합니다만...

네트웍으로(만) 동작해야 하는 데몬이라면 localhost로 요청을 날려도 되지 않을까요. 크게 다를 건 없을 거 같습니다.
일반적인 DBMS의 데몬도 네트웍으로 동작하지만 localhost의 클라이언트가 얼마든지 접속할 수 있거든요.

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5

라스코니의 이미지

데몬에게 메세지를 날리면 되는 것인가 보군요.

정확히는 네트웍으로 하는 일과 로컬 유저와 하는 일이 구분되어 있어서요. 할려고 하는 데몬이 일종의 어플리케이션 서버인데 여러 유저가 이 어플 서버에 요청해서 그 어플을 띄우는데 이 어플은 네트웍으로 middleware나 RPC 등으로 원격의 비슷한 류의 서버와 접속하게 됩니다.

한 유저가 어플 서버에 요청할 때마다 자식 프로세스를 만들어 일하게 됩니다. 일이 끝나면 자식 프로세스를 날리고요.

그럼 정리하면 어플리케이션 서버를 데몬으로 만들고, 이 데몬에게 메시지를 날리는 별도의 프로그램을 만들면 되겠네요.

리눅스에 경험이 거의 없다보니 막히는 부분이 많네요.

위의 내용에 로직의 오류가 없는지요?

답변 주신 분들 감사합니다.

crimsoncream의 이미지

프롬프트로 미루어 보아 unix 계열이라고 짐작하고 말씀드리면

$> man ipc

원하시는 형태의 작업엔 named pipe를 쓰시면 되지 않을까 생각합니다.

=======================================================================
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.

오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.