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

±Û¾´ÀÌ: admin exec ¿Í fork ÀÇ °øµ¿ÀÌ¿ë Á¶È¸¼ö: 5500


fork ¿Í exec ¸¦ ÇÔ²² »ç¿ëÇÔÀ¸·Î½á ÇÁ·Î±×·¡¸Ó¿¡°Ô ´õ ¸¹Àº ±â´ÉÀ»
Á¦°øÇÒ ¼ö ÀÖ´Ù. fork ·Î ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ ¸¸µé°í, ±×ÀÚ½ÄÇÁ·Î¼¼½º
¾È¿¡¼­ exec ¸¦ ÀÌ¿ëÇϸé, ºÎ¸ðÇÁ·Î¼¼½ºÀÇ ÀÔÀå¿¡¼­´Â ÀÚ½ÅÀ» Á×ÀÌÁö
¾Ê°íµµ ÀüÇô ´Ù¸¥ ÇÁ·Î±×·¥À» ºÎÇÁ·Î¼¼½º·Î °¡Áú ¼ö ÀÖ°Ô µÈ´Ù.
°£´ÜÈ÷ ¿À·ù ·çƾ fatal °ú wait ¶ó´Â ½Ã½ºÅÛ È£ÃâÀÌ »õ·ÎÀÌ ¼Ò°³µÈ´Ù.


/* runls3 -- run ls in a subprocess */

main()

{

int pid;

pid = fork();


/* if parent, use wait to suspend

* execution until child finishes

*/

if(pid > 0){

wait((int*)0);

printf("ls completed\n");

exit(0);

}


/* if child then exec ls */

if(pid == 0){

execl("/bin/ls", "ls", "-l",

(char *)0);

fatal("execl failed");

}


/* getting here means pid is

* negative, so error has

* occurred

*/

fatal("fork failed");

}


fatal Àº ÇÑ ¸Þ¼¼Áö¸¦ Ãâ·ÂÇϱâ À§Çؼ­ ´Ü¼øÈ÷ ±âÁ¸ÀÇ perror ¸¦ È£ÃâÇÑ´Ù.


fatal(s) /* print error message and die */

char *s;

{

perror(s);

exit(1);

}


ÀÌ ¿¹¿¡¼­ wait ´Â fork È£Ãâ·Î ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÑ Á÷ÈÄ¿¡ È£ÃâµÈ´Ù. ½Ã½ºÅÛÀº ÀÌ È£Ãâ·Î ÀÎÇØ ÀÚ½ÄÀÌ ³¡³¯¶§±îÁö ºÎ¸ð¸¦ sleep »óÅ¿¡ µÐ´Ù.

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

 

Á¦ ¸ñ

Á¶È¸

³¯Â¥

±Û¾´ÀÌ

 

½Ã½ºÅÛÄÝ»ç¿ë¿¬½À

10139

2002.01.19

system


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