데몬 생성방법중에...

kang0203의 이미지

데몬 생성방법중에여..
데몬은 항상 백그라운드로 수행되어야하는데..
어떤책을 보니깐 백그라운드로 수행되게 하기위해서는
자식 프로세스를 생성하여 작업을 자식프로세스에 넘기고 부모 프로세스는
종료하는데여.이러면 왜 자식 프로세스는 백그라운드로 수행되는지 궁금합니다.

익명 사용자의 이미지

터미널과 통신하지 않는다는 것을 말합니다. 그러니까 유저와 비대화모드가 된다는 거죠.
보통 프로그램을 실행시킬때는 터미널에서 실행시키게 되는데 그러면 터미널의 제어권안에 들어가는 거죠. pid를 보시면 알수 있습니다.
그래서 데몬들은 통상 아래와 같이 코드를 작성합니다.

int main()
{
         switch(fork())
         {
          case -1 :
                 exit(1);
          case 0:
                  setsid();  // 이거이 꼭 필요하니 man을 활용하시길..자체 세션을 같는겁니다. 이거이 없으면 fork하나 마나입니다.
                  break;
           default:
                  exit(0);
          }
 
         // 계속되는 자식 프로세스....

}

또한 이런방식으로 코딩하지 않으면 chkconfig로 ntsysv에 등록이 안되는 걸루 알고 있습니다..