BACKRUSH  À¯´Ð½º¸í·É  ´ÙÀ½  ÀÚ·á½Ç  Ascii Table   ¿ø°ÝÁ¢¼Ó  ´Þ·Â,½Ã°£   ÇÁ·Î¼¼½º   ½©
ÁöÇÏö³ë¼±   RFC¹®¼­   SUN FAQ   SUN FAQ1   C¸Þ´º¾ó   PHP¸Þ´º¾ó   ³Ê±¸¸®   ¾Æ½ºÅ°¿ùµå ¾ÆÀÌÇǼ­Ä¡

±Û¾´ÀÌ: admin fork ½Ã½ºÅÛ È£Ãâ Á¶È¸¼ö: 5895


fork ½Ã½ºÅÛ È£ÃâÀº ±âº»ÀûÀÎ ÇÁ·Î¼¼½º »ý¼º ÇÁ¸®¹ÌƼºêÀÌ´Ù.
ÀÌ°ÍÀ» ÅëÇÏ¿© UNIX ´Â ´ÙÁßó¸® ½Ã½ºÅÛ(multitasking system)À¸·Î
ÀüȯµÈ´Ù.

int pid;
pid = fork();
fork °¡ ¼º°øÀûÀ¸·Î ¼öÇàµÇ¸é Ä¿³ÎÀº È£ÃâÇÏ´Â ÇÁ·Î¼¼½ºÀÇ º¹»çº»À»
»õ·Î¿î ÇÁ·Î¼¼½º·Î¼­ »ý¼º ÇÑ´Ù. »õ·Î »ý¼ºµÈ ÇÁ·Î¼¼½º¸¦
ÀÚ½ÄÇÁ·Î¼¼½º(child process)¶ó ÇÏ°í, fork ¸¦ È£ÃâÇÑ ÇÁ·Î¼¼½º¸¦
ºÎ¸ð ÇÁ·Î¼¼½º(parent process) ¶ó ÇÑ´Ù. fork ÀÇ È£Ãâ·Î
ÀÚ½ÄÇÁ·Î¼¼½º°¡ »ý¼ºµÈ ÈÄ¿¡´Â ºÎ¸ðÇÁ·Î¼¼½º¿Í ÀÚ½Ä
ÇÁ·Î¼¼½º°¡ µ¿½Ã¿¡ ¼öÇà µÇ¸ç, À̶§ µÎ ÇÁ·Î¼¼½º´Â fork È£Ãâ¹®ÀÇ
¹Ù·Î ´ÙÀ½ ¹®ÀåºÎÅÍ ¼öÇàÀ» °è¼ÓÇÑ´Ù.


ÇÁ·Î¼¼½º ½Äº°¹øÈ£

fork ´Â Àμö¾øÀÌ È£ÃâµÇ°í, Á¤¼öÇüÀÇ pid ¸¦ µ¹·ÁÁØ´Ù.

pid = fork();

ºÎ¸ð¿Í ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ ±¸ºÐÇÏ´Â °ÍÀº pidÀÇ °ªÀÌ´Ù.
ºÎ¸ð ÇÁ·Î¼¼½º´Â pid °¡ 0 ÀÌ ¾Æ´Ñ ¾çÀÇ Á¤¼ö °ªÀ» °®´Â
¹Ý¸é ÀÚ½Ä ÇÁ·Î¼¼½º´Â 0 À» °®´Â´Ù. ºÎ¸ð¿¡°Ô·Î µ¹·ÁÁÖ´Â
pid °ªÀ» ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ ÇÁ·Î¼¼½º ½Äº°¹øÈ£(process-id)¶ó ÇÑ´Ù.


/* spawn -- demonstrate fork */

main()

{

int pid; /* hold process-id in parent */

printf("Just one process so far\n");

printf("Calling fork ...\n");

pid = fork(); /* create new process*/

if(pid == 0) printf("I'm the child\n");

else if(pid > 0)

printf("I'm the parent, child has pid %d\n", pid);

else

printf("Fork returned error code, no child\n");

}


fork µÚÀÇ if ¹®¿¡ 3 °³ÀÇ ºÐ±â(branch)°¡ Á¸ÀçÇÑ´Ù.
ù¹ø° ¹®±â´Â º¯¼ö pid °ªÀÌ 0 À϶§, ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ À§ÇÑ
µ¿ÀÛÀ» ¸í¼¼ÇÏ´Â °ÍÀÌ°í, µÎ¹ø° ¹®±â´Â pid °ªÀÌ ¾ç¼öÀ϶§¿¡
ÇØ´çÇÏ´Â °ÍÀ¸·Î, ºÎ¸ð ÇÁ·Î¼¼½º°¡ ÇؾßÇÒ µ¿ÀÛÀ» ³ªÅ¸³½´Ù.
±×¸®°í ¼¼¹ø° ºÐ±â´Â pid °¡ À½¼ö°ª(½ÇÁ¦´Â -1)À» °¡Áú ¶§¿¡
ÇØ´çÇϴµ¥, fork °¡ ÀÚ½Ä ÇÁ·Î¼¼½ºÀÇ »ý¼ºÀÌ ½ÇÆÐÇÏ¿´À» ¶§ÀÇ
µ¿ÀÛÀ» ¸»ÇØÁØ´Ù. ÀÌ·± »óȲÀº ºÎ¸ðÇÁ·Î¼¼½º°¡ ´ÙÀ½°ú °°Àº
µÎÁ¾·ùÀÇ Á¦ÇÑÀ» ±ú¶ß¸®·Á°í ÇßÀ» ¶§ ¹ß»ýÇÑ´Ù. ù°´Â ½Ã½ºÅÛ
Â÷¿ø¿¡¼­ Çã¿ëµÇ´Â ÇÁ·Î¼¼½ºÀÇ °¹¼öÀÌ°í, µÑ°´Â °³º° »ç¿ëÀÚ°¡
µ¿½Ã¿¡ ¼öÇà½Ãų ¼ö ÀÖ´Â ÇÁ·Î¼¼½ºÀÇ ¼ö¿¡ ´ëÇÑ Á¦ÇÑÀÌ´Ù. ÀÌ·±
µÎ Á¾·ùÀÇ »óȲ¿¡¼­ ¿À·ùº¯¼ö errno ´Â EAGAIN À̶ó´Â Äڵ带
°ªÀ¸·Î °¡Áø´Ù.

¿Ö fork °¡ À¯¿ëÇÑ È£ÃâÀΰ¡¸¦ ³íÀÇÇØ º¸ÀÚ. °¡Àå ÇÙ½ÉÀº
fork °¡ UNIX ÀÇ ´Ù¸¥ ±â´Éµé°ú ¿¬°üµÉ¶§ ´õ À¯¿ëÇØÁø´Ù´Â °ÍÀÌ´Ù.
¿¹¸¦µé¾î fork ·Î ¸¸µé¾îÁø ºÎ¸ð¿Í ÀÚ½Ä ÇÁ·Î¼¼½º´Â UNIX ¿¡¼­
Á¦°øÇÏ´Â signal À̳ª pipe µî°ú °°Àº ÇÁ·Î ¼¼½º°£ÀÇ Åë½Å±â´ÉÀ»
ÀÌ¿ëÇÏ¿© ¼­·Î ÇùÁ¶ÇØ °¡¸é¼­, ¼­·Î °ü·ÃµÇ¾î ÀÖÁö¸¸
¼­·Î ´Ù¸¥ ÀϵéÀ» ÇØ ³ª°¥ ¼ö°¡ ÀÖ´Ù.

°ü·Ã±Û : 1 °Ç ±Û¾´½Ã°£ : 2002/01/19 17:54 from 210.121.188.5

 

Á¦ ¸ñ

Á¶È¸

³¯Â¥

±Û¾´ÀÌ

 

echo client [tcp]

8248

2002.01.19

echo


  exec  ½Ã½ºÅÛÈ£Ãâ ¸ñ·Ïº¸±â »õ±Û ¾²±â Áö¿ì±â ÀÀ´ä±Û ¾²±â ±Û ¼öÁ¤ ÇÁ·Î¼¼½º °£ÀÇ Åë½Å  
BACKRUSH  À¯´Ð½º¸í·É  ´ÙÀ½  ÀÚ·á½Ç  Ascii Table   ¿ø°ÝÁ¢¼Ó  ´Þ·Â,½Ã°£   ÇÁ·Î¼¼½º   ½©
ÁöÇÏö³ë¼±   RFC¹®¼­   SUN FAQ   SUN FAQ1   C¸Þ´º¾ó   PHP¸Þ´º¾ó   ³Ê±¸¸®   ¾Æ½ºÅ°¿ùµå ¾ÆÀÌÇǼ­Ä¡