[ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): guest (guest) <211.219.38.179> ³¯ Â¥ (Date): 2002³â 7¿ù 25ÀÏ ¸ñ¿äÀÏ ¿ÀÈÄ 12½Ã 52ºÐ 57ÃÊ Á¦ ¸ñ(Title): [¸®´ª½º ¼ÒÄÏ Áú¹® ÀÔ´Ï´Ù.] ¸®´ª½º¿¡¼­ C·Î ¼­¹ö¼ÒÄÏÀ» ¸¸µç ÈÄ Å¬¶óÀ̾ðÆ®¿¡¼­ º¸³»´Â µ¥ÀÌÅ͸¦ ÆÄÀÏ¿¡ ±â·ÏÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾ú´Âµ¥ for()·Î »ý¼ºÇÑ Â÷Àϵ尡 ¼ÒÄÏ Á¾·áÈÄ defunct »óÅ·Π³²¾Æ ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¥ ·çƾÀ» °£´ÜÇÏ°Ô ¿Ã¸®¸é... process() { //ÀÌ°Í Àú°Í } main() { socket(); bind(); listen(); for(;;){ sock2 = accept(); switch(fork()){ case -1: exit(1); case 0: while(1){ if(recv() <= 0){ close(sock2); process(); exit(1); break; } fprintf(); } //while exit(1); break; } } } ÀÌó·³ accept()·Î ¿¬°á ¿äûÀ» ¹ÞÀº ÈÄ fork()·Î ÇÁ·Î¼¼½º ¸¸µé°í ÀÚ½Ä ÇÁ·Î¼¼½º¿¡¼­ Ŭ¶óÀ̾ðÆ® µ¥ÀÌÅ͸¦ ó¸®ÇÑ ÈÄ Á¾·á, ºÎ¸ð ÇÁ·Î¼¼½º´Â °è¼Ó ´ë±â ÇÏ´Â °Çµ¥ ¹¹°¡ À߸øµÇ¾î¼­ Á»ºñ »óÅ·Π³²¾Æ ÀÖÀ»±î¿ä? [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): terzeron (microkid) ³¯ Â¥ (Date): 2002³â 7¿ù 25ÀÏ ¸ñ¿äÀÏ ¿ÀÈÄ 02½Ã 36ºÐ 31ÃÊ Á¦ ¸ñ(Title): Re: [¸®´ª½º ¼ÒÄÏ Áú¹® ÀÔ´Ï´Ù.] fork()¸¦ switch case·Î ÇÏ´Â °É óÀ½ ºÃ½À´Ï´Ù. ^^ parent process°¡ child processÀÇ »óŸ¦ Ä¿³Î·ÎºÎÅÍ ¹Þ¾Æ¿Ã ¼ö ÀÖµµ·Ï waitÇØÁÖ¼¼¿ä. parent°¡ Á×Àº ÀڽĿ¡½Å°æÀ» ¾È ¾²´Ï Ä¿³ÎÀÌ child processÀÇ Á¾·áÈÄ »óÅÂ(¸»ÇÏÀÚ¸é ½Ãü)¸¦ °ü¸®ÇÏ°Ô µÇ¹Ç·Î ps Çغ¸¸é Z¶ó°í ³ª¿À´Â °Ì´Ï´Ù. wait()³ª waitpid()... default:¿¡ ³Ö¾îÁÖ½Ã¸é µÇ°ÚÁÒ? [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): swhan (foo bar) ³¯ Â¥ (Date): 2002³â 7¿ù 25ÀÏ ¸ñ¿äÀÏ ¿ÀÈÄ 04½Ã 38ºÐ 55ÃÊ Á¦ ¸ñ(Title): Re: [¸®´ª½º ¼ÒÄÏ Áú¹® ÀÔ´Ï´Ù.] ´ýÀ¸·Î... child¿¡ ½Å°æÀ» ¾²±â ½ÈÀ¸½Ã¸é... child°¡ process group leader°¡ µÇ°Ô ÇÏ½Ã¸é µÉ°Ì´Ï´Ù. setsid ¿ë¹ýÀ» ã¾Æº¸¼¼¿ä :) fork fork~ [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): dalgong (´Þ°ø¾ÆÀú¾¾) ³¯ Â¥ (Date): 2002³â 7¿ù 26ÀÏ ±Ý¿äÀÏ ¿ÀÀü 10½Ã 12ºÐ 34ÃÊ Á¦ ¸ñ(Title): Re: [¸®´ª½º ¼ÒÄÏ Áú¹® ÀÔ´Ï´Ù.] process group leaderÀΰŶû ºÎ¸ð°¡ Á×Àº ÀÚ½Äó¸®ÇÏ´Â °Å¶ûÀº °ü°è°¡ ¾ø½À´Ï´Ù. ±Û°í session leader°¡ µÇ±â À§Çؼ­ fork()¸¦ µÎ¹øÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. (forkµÈ ÀÚ½ÄÀº session leader°¡ ¾Æ´Ô) fork ()µÎ¹øÇϴ°Ç, ÀÚ½ÄÀÇ ÀÚ½ÄÀÇ ÀÔÀå¿¡¼­ Àڱ⠺θ𰡠Á×À¸¸é ºÎ¸ð°¡ pid 1(init) À¸·Î ¹Ù²î°Ô µÇ¼­ initÀÌ waitÀ» ÇØÁÖ°Ô µÇ´Â°Å±¸¿ä. óÀ½ fork()¸¦ ÇßÀ»¶§ ºÎ¸ðÀÔÀå¿¡¼­´Â ÀÚ±â ÀÚ½ÄÀº fork()ÈÄ¿¡ ¹Ù·Î Á×À» ²¨´Ï±î, °Å±â °É¸®´Â ½Ã°£ÀÌ Âª´Ù°í º¸°í wait()À¸·Î blockingÈÄ¿¡ ÁøÇàÇÏ´Â °ÍÀÌ°ÚÁö¿ä. SIGCLD ȤÀº SIGCHLD¸¦ ¹«½ÃÇϸé Á»ºñ°¡ »ý±âÁö ¾Ê´Â ½Ã½ºÅÛÀÌ ÀÖ°í, °°Àº signal¿¡¼­ ¾Õ¿¡ terzeron´ÔÀÌ ¾ê±âÇϽŵ¥·Î wait, waitpid·ù¸¦ ºÒ·¯Áà¾ß Á»ºñ°¡ ¾È »ý±â°Ô µÇ´Â ½Ã½ºÅÛÀÌ Àִµ¥ µÚ¿¡ ¹æ½ÄÀº Ç×»ó µ¿ÀÛÇÏ°Ô µÇÁÒ. @»çÁ·: ¾Õ¿¡ ¾²½ÅºÐ switch¹®¿¡ default: close (sock2); break; ÀÌ°Å ºÙ¾î Áà¾ß ÇÕ´Ï´Ù. [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): dalgong (´Þ°ø¾ÆÀú¾¾) ³¯ Â¥ (Date): 2002³â 7¿ù 26ÀÏ ±Ý¿äÀÏ ¿ÀÀü 10½Ã 28ºÐ 22ÃÊ Á¦ ¸ñ(Title): Re: [Áú¹®]Linux¿¡¼­ send(), SIGPIPE, SIG SIGSTP°¡ ¿Â´Ù´Â °Ç ÀÌÇØ°¡ ¾È°¡³×¿ä. ´Ù¸¥ ÀÌÀ¯·Î ÀÌ°Ô ³¯¶ó¿À´Â °Ç ¾Æ´ÑÁö »ìÆ캸½Ã´Â°Ç.. º°·Î °ü°è ¾ø´Â ¾ê±âÁö¸¸.. select()·Î connection close¸¦ °Ë»çÇϽŴٰí Çϼ̴µ¥, ±×°Ô Á¦´ë·Î µ¿ÀÛÀ» ¾ÈÇÏÁö ¾Ê³ª¿ä? ÀϹÝÀûÀ¸·Î connection close¸¦ °Ë»çÇÒ·Á¸é, read()°¡ 0À» ¹ÝȯÇϰųª, write()°¡ -1 & EPIPE (¹°·Ð SIGPIPE¸¦ ignoreÇÑ »óÅ¿¡¼­)µîÀÇ »óÅÂÀÎ °æ¿ìÀÔ´Ï´Ù. write¿¡¼­ connection closeÀÎ °É ¾Ë¾Æµµ, ±×Àü¿¡ writeÇÑ°Ô Á¦´ë·Î Àü´ÞµÇ¾ú´ÂÁö ¿©ºÎ´Â ¾Ë ¼ö ¾ø±â ¶§¹®¿¡ application¿¡¼­ 󸮸¦ ÇØÁà¾ß ÇÕ´Ï´Ù. ÀÌ·± ¹®Á¦·Î Çؼ­ socketÀº ÇÁ·Î±×·¥ÀÇ ±¸¼ºÀ» ÇÒ¶§ Áß°£Áß°£¿¡ connection closeÇÏ´Â ºÎºÐ¿¡ ´ëÇÑ Ã³¸®°¡ ¾î¿ ¼ö ¾øÀÌ µé¾î°¡°Ô µÇ´Â ÁöÀúºÐÇÑ ¹®Á¦°¡ ÀÖÁÒ. ÀÌ°É ±ò»ïÇÏ°Ô ÇØ°áÇÏ´Â ¹æ¹ýÀÖ³ª¿ä? [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): swhan (foo bar) ³¯ Â¥ (Date): 2002³â 7¿ù 26ÀÏ ±Ý¿äÀÏ ¿ÀÈÄ 12½Ã 49ºÐ 07ÃÊ Á¦ ¸ñ(Title): Re: [¸®´ª½º ¼ÒÄÏ Áú¹® ÀÔ´Ï´Ù.] Á¦ Ç¥Çö»ó¿¡ ¹®Á¦°¡ Á» ÀÖ±ä Çϱº¿ä :) ¾î·µç, ±â¼úÀûÀÎ °ü°è.. º¸´Ù´Â ¹®Á¦ÀÇ ÇØ°áÃ¥Àº µÇÁö ½ÍÀºµ¥¿ä. :) child(°¡ ¾ó¸¶³ª ½ÇÇàµÉÁö´Â ¸ô¶óµµ ±× child)¸¦ be daemon~ ½ÃÄѹö¸®¸é.. parentÀÔÀå¿¡¼­´Â child¸¦ ¿À·¡¿À·¡(!) waitÇÒ ÇÊ¿ä°¡ ¾ø°í, child´Â Áö ²Ã¸®´Â ½ÃÁ¡¿¡ exitÇعö¸®¸é µÇ´Ï±î¿ä. (¹¹...°¡²û non-blockÀ¸·Î waitÀ» ÇØÁ൵ µË´Ï´Ù¸¸.. ±ÍÂúÀ¸´Ï±î ) parent¶û child»çÀÌ¿¡ pipe¶óµµ ¿¬°áÇÏ°Ú´Ù°í Çϸé... -.-a @±Ùµ¥.. session leader°¡ µÇ±â À§Çؼ­ fork°¡ 2¹ø ÇÊ¿äÇÑ OSµµ ÀÖÁö ¾Ê³ª¿ä? ¾îµð¼±°¡ ±×°Å ÀÐ°í ¹«Á¶°Ç fork setsid forkÇØÁÖ´Â ½À°üÀÌ µé¾î¹ö·È´Âµ¥.. ±×°Ô ¾ðÁ¦ÀÎÁöµµ °¡¹°°¡¹° :( [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): terzeron (microkid) ³¯ Â¥ (Date): 2002³â 7¿ù 26ÀÏ ±Ý¿äÀÏ ¿ÀÈÄ 01½Ã 55ºÐ 02ÃÊ Á¦ ¸ñ(Title): Re: [¸®´ª½º ¼ÒÄÏ Áú¹® ÀÔ´Ï´Ù.] ¾Æ¸¶µµ ÀÌ·± ·ùÀÇ ³»¿ëÀº ÀÛ°íÇϽŠÀ§´ëÇÑ ½ºÆ¼ºì½º ÁöµµÀÚ µ¿¹«²²¼­ ÈƽÃÇϼÌÀ» °Ì´Ï´Ù. System V¿¡¼­´Â fork¸¦ µÎ ¹ø Çؼ­ daemonÀ» ¸¸µì´Ï´Ù. daemonÀÌ µÇ±â À§ÇÑ º¹ÀâÇÑ Á¶°ÇµéÀ» ¸¸Á·½ÃÅ°±â À§Çؼ­ Á¦¾î Å͹̳ÎÀ» ³¯·Á ¹ö¸®°í ÇÁ·Î¼¼½ºÀÇ ±×·ì ¸®´õ°¡ µÇ°í, (System V¿¡¼­´Â ±×·ì ¸®´õ´Â Á¦¾î Å͹̳ÎÀ» ¾òÀ» ¼ö ÀÖÀ¸´Ï) ´Ù½Ã Á¦¾î Å͹̳ÎÀ» ¾òÀ» °¡´É¼ºÀ» ¾ø¾Ö±â À§ÇØ forkÇؼ­ ¸¸µé¾îÁø child¸¦ daemonÀ¸·Î ¾¹´Ï´Ù. ¾îÈÞ... º¹ÀâÇÏÁÒ??? [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): guest (guest) <61.82.96.61> ³¯ Â¥ (Date): 2002³â 7¿ù 27ÀÏ Åä¿äÀÏ ¿ÀÈÄ 03½Ã 12ºÐ 00ÃÊ Á¦ ¸ñ(Title): Re: [¸®´ª½º ¼ÒÄÏ Áú¹® ÀÔ´Ï´Ù.] ´äº¯ °¨»çÇÕ´Ï´Ù. ±×·±µ¥ wait()À̶ó´Â °Ç ÀÚ½Ä ÇÁ·Î¼¼½º°¡ Á×À» ¶§±îÁö ±â´Ù¸®´Â °Å¶ó´Âµ¥ À̸¦ ±â´Ù¸®Áö ¾Ê°í ºÎ¸ð´Â ÀÚ½ÅÀÇ ÀÏÀ» °è¼Ó Çϵµ·Ï ÇÒ ¼ö´Â ¾ø½À´Ï±î? [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): swhan (foo bar) ³¯ Â¥ (Date): 2002³â 7¿ù 27ÀÏ Åä¿äÀÏ ¿ÀÈÄ 04½Ã 03ºÐ 41ÃÊ Á¦ ¸ñ(Title): Re: [¸®´ª½º ¼ÒÄÏ Áú¹® ÀÔ´Ï´Ù.] waitÀÌ ²À ¿À·¡ ±â´Ù¸± ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¾ÆÁÖ ÂªÀº ½Ã°£ ±â´Ù·Áº¸°í ´ã¿¡ ¶Ç È®ÀÎÇÏÁö ¸ð~~ ÀÌ·¯°í ³ª¿À´Â ¹æ¹ýÀÌ man waitÇغ¸¸é ¾ÆÁÖ »ó¼¼È÷ ³ª¿Í ÀÖ½À´Ï´Ù. :)