SIGTERM ´Ù·ç±â
ÃÑ ÆäÀÌÁö ¼ö : 3178
ÇöÀçÀ§Ä¡ : SIGTERM ´Ù·ç±â    

¸ñ Àû

Code

#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>

class tClass1 {

   private :
      char* buf;

   public :
      void method(void) {
         buf = new char[100];
         while (1) {
            printf("This is thread 1\n");
            sleep(1);
         }
      }
      ~tClass1(void) {
         delete[] buf;
         printf("Thread 1 exit\n");
      }

};

class tClass2 {

   private :
      char* buf;

   public :
         void method(void) {
            buf = new char[100];
            while (1) {
               printf("This is thread 2\n");
               sleep(1);
            }
         }
         ~tClass2(void) {
            delete[] buf;
            printf("Thread 2 exit\n");
         }

};

tClass1* pClass1;
tClass2* pClass2;
pthread_t pt1, pt2;

void* tFunc1(void* arg) {
   pClass1->method();
}

void* tFunc2(void* arg) {
   pClass2->method();
}

void hanSigInt(int sig) {
   printf("Got signal %d\n", sig);
   sleep(3);
   printf("Leave handle of signal\n");
}

void hanSigTerm(int sig) {
   printf("Got signal %d\n", sig);
   pthread_cancel(pt1);
   pthread_cancel(pt2);
   delete pClass1;
   delete pClass2;
   sleep(3);
   pthread_join(pt1, NULL);
   pthread_join(pt2, NULL);
   printf("Leave this program\n");
   exit(EXIT_SUCCESS);
}

int main(void) {
   daemon(1, 1);
   pClass1 = new tClass1;
   pClass2 = new tClass2;
   signal(SIGINT, hanSigInt);
   signal(SIGTERM, hanSigTerm);
   pthread_create(&pt1, NULL, tFunc1, NULL);
   pthread_create(&pt2, NULL, tFunc2, NULL);
   while (1) {
      printf("This is main\n");
      sleep(1);
   }
   exit(EXIT_SUCCESS);
}

  • À§¿Í°°ÀÌ SIGTERM ¹ß»ý ½Ã ¾²·¹µå¸¦ ÀǵµÀûÀ¸·Î ¸ØÃß°í, ÀǵµÀûÀ¸·Î Ŭ·¡½º °´Ã¼¸¦ ÇØÁ¦½ÃÄÑ - ±×·¯±â À§Çؼ­ Ŭ·¡½º ÀνºÅϽº°¡ ¾Æ´Ï¶ó Ŭ·¡½º Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿´´Ù - ¼Ò¸êÀÚ¸¦ ½ÇÇà½ÃŰ°í ³ª¼­ ÇÁ·Î±×·¥À» Á¾·áÇÏ´Â°Ô ±ò²ûÇÒ ¼ö µµ ÀÖ°Ú´Ù.
  • Ç㳪 Á» °£´ÜÇÏ°Ô ÇÑ´Ù¸é Ŭ·¡½º Æ÷ÀÎÅÍ´ë½Å ±×³É Ŭ·¡½º ÀνºÅϽº¸¦ »ý¼ºÇϰí, SIGTERM ¹ß»ý½Ã Çڵ鷯¿¡¼­ exit ¸¸ ÇØÁ൵ ÇÁ·Î±×·¥Àº ¾Ë¾Æ¼­ ¾²·¹µå¸¦ Á¾·á½Ã۰í ÀνºÅϽº¸¦ ÇØÁ¦Çϸ鼭 ÀÚµ¿À¸·Î ¼Ò¸êÀÚ¸¦ È£ÃâÇÏ°Ô µÈ´Ù. Ç㳪 ¸í¹éÇÑ ¼ø¼­´Â ¼Ò¸êÀÚ°¡ ¸ÕÀú È£ÃâµÇ°í ±× ÀÛ¾÷ÀÌ ³¡³­ ÈÄ ´ÙÀ½À¸·Î ¾²·¹µå Á¾·áµÈ´Ù. ªÀº¼ø°£ÀÌÁö¸¸ À¯È¿ÇÏÁö ¾Ê´Â ¸Þ¸ð¸®, ȤÀº ±â¼úÀÚ¿¡ ¿¢¼¼½ºÇÏ´Â ¾²·¹µåÀÇ ÀÛ¾÷ÀÌ ÀÖÀ»¼öµµ Àִµ¥ ÀÌ·¯ÇÑ »óȲ¿¡¼­ ½É°¢ÇÑ ¹®Á¦°¡ »ý±æ °¡´É¼ºÀÌ ÀÖ´ÂÁö, ¾ø´ÂÁö´Â È®½ÅÇÏÁö ¸øÇϰڴÙ. (°ÅÀÇ ¾ø´Ù°í »ý°¢µÈ´Ù)

 °íÄ¡±â  Ã£±â  ÂÊ Áö¿ì±â  ºñ½ÁÇÑ ÂÊ (Joinc.co.kr) ÃÖÁ¾¼öÁ¤ÀÏ 2007-01-09 11:46:12 - (0.7358 sec )