SIGTERM ´Ù·ç±â
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

¸ñ Àû

  • C++ ·Î ¸¸µé¾îÁø µ¥¸óÇÁ·Î±×·¥ÀÇ Á¾·á½Ã °¢ Ŭ·¡½º °´Ã¼ÀÇ ¼Ò¸êÀÚ¸¦ ¾î¶»°Ô È£ÃâµÇ°Ô ÇÒ °ÍÀΰ¡¿¡ ´ëÇÑ °íÂû

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 ¸¸ ÇØÁ൵ ÇÁ·Î±×·¥Àº ¾Ë¾Æ¼­ ¾²·¹µå¸¦ Á¾·á½Ã۰í ÀνºÅϽº¸¦ ÇØÁ¦Çϸ鼭 ÀÚµ¿À¸·Î ¼Ò¸êÀÚ¸¦ È£ÃâÇÏ°Ô µÈ´Ù. Ç㳪 ¸í¹éÇÑ ¼ø¼­´Â ¼Ò¸êÀÚ°¡ ¸ÕÀú È£ÃâµÇ°í ±× ÀÛ¾÷ÀÌ ³¡³­ ÈÄ ´ÙÀ½À¸·Î ¾²·¹µå Á¾·áµÈ´Ù. ªÀº¼ø°£ÀÌÁö¸¸ À¯È¿ÇÏÁö ¾Ê´Â ¸Þ¸ð¸®, ȤÀº ±â¼úÀÚ¿¡ ¿¢¼¼½ºÇÏ´Â ¾²·¹µåÀÇ ÀÛ¾÷ÀÌ ÀÖÀ»¼öµµ Àִµ¥ ÀÌ·¯ÇÑ »óȲ¿¡¼­ ½É°¢ÇÑ ¹®Á¦°¡ »ý±æ °¡´É¼ºÀÌ ÀÖ´ÂÁö, ¾ø´ÂÁö´Â È®½ÅÇÏÁö ¸øÇϰڴÙ. (°ÅÀÇ ¾ø´Ù°í »ý°¢µÈ´Ù)
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.