exit(3)
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>exit(3)



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À» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.