ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTML º¯È¯¹®¼
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> <chapter lang=ko> <!-- ÀÛ¼ºÀÚ : yundream --> <!-- ÀÛ¼ºÀÏ : 2004/04/14 --> <!-- ¿¬¶ôó : yundream@joinc.co.kr --> <!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> <title>exit(3)</title> <!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> <para> ÇÁ·Î±×·¥À» Á¤»ó Á¾·á ½ÃŲ´Ù. </para> <!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> <section> <title>»ç¿ë¹ý</title> <para> <screen> #include <stdlib.h> void exit(int status); </screen> </para> </section> <!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> <section> <title>¼³¸í</title> <para> exit()ÇÔ¼ö´Â ÇÁ·Î±×·¥À» Á¤»óÁ¾·á ½Ã۸ç, À̶§ Á¾·á °ªÀ¸·Î <emphasis>status</emphasis>¸¦ ºÎ¸ðÇÁ·Î¼¼½º¿¡ status & <emphasis>0377</emphasis> ·Î³Ñ°ÜÁØ´Ù. ºÎ¸ð ÇÁ·Î¼¼½º´Â wait(2)¸¦ ÀÌ¿ëÇØ¼ ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ Á¾·á°ªÀ» ÀÐ¾î ¿Ã ¼ö ÀÖ´Ù. exit()°¡ È£ÃâµÇ¸é atexit()¿Í on_exit()¿¡ ÀÇÇØ¼ µî·ÏµÈ ÇÔ¼öµéÀÌ ¸ÕÀú ½ÇÇàµÈ´Ù. ±× ÈÄ ¸ðµç ¿¸° ½ºÆ®¸²À» ºñ¿ì°í(flush) ´Ý´Â´Ù. tmpfile()¿¡ ÀÇÇØ¼ »ý¼ºµÈ ÀÓ½ÃÆÄÀϵµ À̶§ »èÁ¦µÈ´Ù. </para> <para> Ç¥ÁØ C¿¡¼´Â exit()ÀÇ Á¾·á°ªÀ» À§Çؼ <emphasis>EXIT_SUCCESS</emphasis>¿Í <emphasis>EXIT_FAILURE</emphasis>¸¦ ÁغñÇØµÎ°í ÀÖ´Ù. </para> </section> <!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> <section> <title>¹Ýȯ°ª</title> <para> ¾Æ¹«°Íµµ ¸®ÅÏÇÏÁö ¾Ê´Â´Ù. </para> </section> <section> <title>ÁÖ¸ñ</title> <para> exit°¡ ÁøÇàµÇ´Â µ¿¾È atexit()¿Í on_exit()¿¡ ÀÇÇØ¼ µî·ÏµÈ ÇÔ¼öµéÀÌ ÀÖ´Ù¸é À̵éÀ» ¸ðµÎ ½ÇÇàÇÑ´Ù. µî·ÏµÈ ÇÔ¼öµéÀº (½ºÅÃÇüÅ·Î) °¡Àå ¸¶Áö¸·¿¡ µî·ÏµÈ ÇÔ¼ö¸¦ °¡Á®¿Í¼ ½ÇÇàµÈ´Ù. ¸¸¾à exit °úÁ¤Áß¿¡ longjmp()µîÀÌ È£ÃâµÈ´Ù¸é ¾î¶°ÇÑ ÀÏÀÌ ÀϾÁö ¿¹ÃøÇÒ ¼ö ¾ø´Ù. </para> <para> EXIT_SUCCESS ¿Í EXIT_FAILURE ´Â Á¾·á°ªÀ» °£´ÜÇÏ°í ¸íÈ®ÇÏ°Ô °áÁ¤Çϱâ À§Çؼ »ç¿ëÇÑ´Ù. EXIT_SUCCESS´Â ÇÁ·Î±×·¥ÀÌ ÁÖ¾îÁø ÀÏÀ» Á¤»óÀûÀ¸·Î ¼öÇàÇßÀ½À» EXIT_FAILURE´Â Á¤»óÀûÀ¸·Î ¼öÇàÇÏÁö ¾Ê¾ÒÀ½À» ¾Ë·ÁÁÖ±â À§Çؼ »ç¿ëÇÑ´Ù. ¹°·Ð ÇÁ·Î±×·¥¿¡ µû¶ó¼ ´Ù¾çÇÑ Á¾·á°ªÀ» ¸®ÅÏÇÒ ¼öµµ ÀÖÀ¸¸ç, À̰ÍÀº ÇÁ·Î±×·¥°³¹ßÀÚÀÇ Á¤Ã¥¿¡ ÀÇÁ¸ÀûÀÌ µÈ´Ù. º¸Åë 0À» Á¤»ó ¼öÇà, ±×·¸Áö ¾ÊÀº °æ¿ì¸¦ ºñÁ¤»ó ¼öÇà(¿¡·¯)·Î Á¤ÀÇÇÑ´Ù. </para> <para> exit()°¡ ¼öÇàµÇ¸é¼ ¹ß»ýÇÑ »óŰªÀº ¹Ýµå½Ã ºÎ¸ð¿¡°Ô Àü´ÞµÇ¾îÁ®¾ß ÇÑ´Ù. ¿©±â¿¡´Â µÎ °¡Áö °æ¿ì°¡ Àִµ¥, ºÎ¸ð°¡ SA_NOCLDWAIT »óÅÂÀ̰ųª, SIGCHLD ½Ã±×³Î¿¡ ´ëÇØ¼ ½Ã±×³Î Çڵ鷯¸¦ SIG_IGNÀ¸·Î ÁöÁ¤Çß´Ù¸é Á¾·á°ªÀ» ¹ö¸®°Ô µÈ´Ù. ¸¸¾à ºÎ¸ð°¡ wait()ÇÔ¼öµîÀ» ÀÌ¿ëÇØ¼ ÀÚ½ÄÀÇ Á¾·á¸¦ ±â´Ù¸®°Ô µÇ¸é ºÎ¸ð´Â ÀÚ½ÄÀÇ Á¾·á°ªÀ» ¾òÀ» ¼ö ÀÖ°Ô µÈ´Ù. ¾î´À ÂÊÀ» ¼±ÅÃÇϵçÁö °£¿¡ ÀÚ½Ä ÇÁ·Î¼¼½º´Â Áï°¢ Á¾·áÇϴµ¥, ¸¸¾à ºÎ¸ð°¡ SA_NOCLDWAITÀ̰ųª SIGCHLD¿¡ ´ëÇØ SIG_IGNÇÏÁö ¾ÊÀº »óÅ¿¡¼ Áï ÀÚ½ÄÀÇ Á¾·á¸¦ ±â´Ù¸®°Ú´Ù°í ¸í½ÃÇÑ »óÅ¿¡¼ wait()¸¦ ÇÏÁö ¾Ê¾ÒÀ» °æ¿ì ÀÚ½Ä ÇÁ·Î¼¼½º´Â Á»ºñ(zombie)ÇÁ·Î¼¼½º »óŰ¡ µÈ´Ù. Á»ºñ ÇÁ·Î¼¼½º¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_Zombie¿¡_´ëÇÑ_°íÂû"> Á»ºñ ÇÁ·Î¼¼½º¿¡ ´ëÇÑ °íÂû</ulink>À» Âü°íÇϱ⠹ٶõ´Ù. </para> <para> ¸¸¾à SIGCHLD ½Ã±×³ÎÀ» Áö¿øÇϵµ·Ï signal()¼³Á¤À» Çß´Ù¸é ÀÚ½Ä ÇÁ·Î¼¼½º°¡ Á¾·áÇßÀ» ¶§ SIGCHLD ½Ã±×³ÎÀÌ ºÎ¸ð¿¡°Ô º¸³»¾îÁø´Ù. ¸¸¾à SA_NOCLDWAIT·Î ¼³Á¤µÇ¾î ÀÖ´Ù¸é SIGCHLD ½Ã±×³ÎÀÌ Àü´ÞµÇ¾úÀ» ¶§ ¾î¶² ÀÏÀÌ ÀÏ¾î ³¯Áö ¿¹Ãø ÇÒ¼ö ¾ø´Ù. </para> <para> ¸¸¾à Á¾·áµÇ´Â ÇÁ·Î¼¼½º°¡ ¼¼¼Ç ¸®´õÀÌ°í ¼¼¼Ç°ú ÀÚ½ÅÀÇ Å͹̳ÎÀ» Á¦¾îÇϰí ÀÖ´Ù¸é, ÀÌ Å͹̳ÎÀ» »ç¿ëÇÏ´Â foreground ÇÁ·Î¼¼½º¿¡°Ô´Â SIGHUP½Ã±×³ÎÀÌ Àü´ÞµÇ°í ¼¼¼Ç°ú Å͹̳ÎÀÇ ¿¬°áÀÌ ÇØÁ¦µÈ´Ù. </para> </section> <!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù --> <!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> <!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ ¿Ã·ÁÁּŵµ µË´Ï´Ù --> <!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê --> <!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼ ¿Ã¸®°Ú½À´Ï´Ù --> <!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä --> <section> <title>¿¹Á¦</title> <para> <screen> #include <unistd.h> #include <string.h> #include <stdio.h> #include <sys/types.h> #include <sys/wait.h> int main() { int pid; int status; int spid; pid = fork(); if (pid == 0) { sleep(5); printf("I will be back %d\n", getpid()); return 1; } else if(pid > 0) { printf("Im parent %d\n", getpid()); printf("Press any key and wait\n"); getchar(); // ÀÚ½ÄÇÁ·Î¼¼½º¸¦ wait ÇÑ´Ù. // ÀÚ½ÄÇÁ·Î¼¼½ºÀÇ Á¾·á»óÅ´ status ¸¦ ÅëÇØ ¹Þ¾Æ¿Â´Ù. spid = wait(&status); printf("ÀÚ½ÄÇÁ·Î¼¼½º wait ¼º°ø \n"); // ÀÚ½ÄÇÁ·Î¼¼½ºÀÇ PID, ¸®Åϰª, Á¾·á»óÅÂ(Á¤»óÁ¾·áȤÀº ºñÁ¤»óÁ¾·á)¸¦ // ¾ò¾î¿Â´Ù. printf("PID : %d\n", spid); printf("Exit Value : %d\n", WEXITSTATUS(status)); printf("Exit Stat : %d\n", WIFEXITED(status)); } else { perror("fork error :"); } } </screen> </para> </section> <section> <title>Âü°í¹®Çå</title> <para> <orderedlist> <listitem> <para> <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_Zombie¿¡_´ëÇÑ_°íÂû">Á»ºñÇÁ·Î¼¼½º¿¡ ´ëÇÑ °íÂû</ulink> </para> </listitem> <listitem> <para> <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_ÇÁ·Î¼¼½º °ü°è">ÇÁ·Î¼¼½º °ü°è</ulink> </para> </listitem> <listitem> <para> atexit(3) </para> </listitem> </orderedlist> </para> </section> </chapter> |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|