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

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


exec ±º(family) ¿¡ ¼ÓÇÑ ¾î¶² È£ÃâÀº »õ·Î¿î ÇÁ·Î±×·¥ÀÇ ¼öÇàÀ» À§ÇØ
»ç¿ëµÉ ¼ö ÀÖ´Ù.

char *path, *file;
char *arg0, *arg1, ..., *argn;
char *argv[];
int ret;
.
.

ret = execl(path, arg0, arg1, ..., argn,(char *)0);
ret = execv(path, argv);
ret = execlp(file, arg0, arg1, ..., argn,(char *)0);
ret = execvp(file, argv);

exec ÀÇ ¸ðµç º¯Á¾µéÀº µ¿ÀÏÇÑ ±â´ÉÀ» ¼öÇàÇÑ´Ù.
Áï, È£Ãâ ÇÁ·Î¼¼½º(exec ¸¦ È£ÃâÇÏ´Â)ÀÇ ±â¾ï Àå¼Ò¿¡ »õ·Î¿î
ÇÁ·Î±×·¥À» ·Îµå(load)ÇÔÀ¸·Î½á, È£Ãâ ÇÁ·Î¼¼½º°¡ »õ ÇÁ·Î±×·¥À»
¼öÇàÇϵµ·Ï ÇÑ´Ù. exec °¡ ¼º°øÀûÀ¸·Î ¼öÇàµÇ¸é È£Ãâ ÇÁ·Î
±×·¥Àº ¿ÏÀüÈ÷ »õ·Î¿î ÇÁ·Î±×·¥À¸·Î ´ëÄ¡µÇ°í, ±× ÇÁ·Î±×·¥ÀÇ
óÀ½ºÎÅÍ ¼öÇàÀº ½ÃÀÛÇÏ°Ô µÈ´Ù. °á°ú´Â »õ·Î ¸¸µé¾îÁø ÇÁ·Î¼¼½º
Çϳª¸¸ÀÌ Á¸Àç Çϴµ¥, ÀÌ ÇÁ·Î¼¼½º´Â Àڱ⸦ È£ÃâÇÑ ÇÁ·Î¼¼½º ¿Í
¶È°°Àº ÇÁ·Î¼¼½º½Äº°¹øÈ£¸¦ °¡Áø´Ù.
exec ´Â È£Ãâ ÇÁ·Î¼¼½º¿Í µ¿½Ã¿¡ ¼öÇàÇÏ´Â »õ·Î¿î ºÎÇÁ·Î¼¼½º¸¦
»ý¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó´Â Á¡ÀÌ Áß¿äÇÏ´Ù.
exec ·Î ºÎÅÍÀÇ º¹±Í°ªÀº ¾ø´Ù. excl ÀÇ ¸ðµç Àμö´Â ¹®ÀÚÇüÀÇ
Æ÷ÀÎÅÍÀÌ´Ù. ù¹ø° ÀμöÀÎ path ´Â »õ·ÎÀÌ ¼öÇàµÉ ÇÁ·Î±×·¥ÀÌ
µé¾îÀÖ´Â È­ÀÏÀÇ À̸§À» °¡¸®Å²´Ù. ÀÌ°ÍÀº Àý´ë ¶Ç´Â »ó´ëÀûÀÎ
À¯È¿ÇÑ °æ·ÎÀ̸§À̾î¾ßÇÑ´Ù. execl(ȤÀº execv)´Â ½©¸í·ÉÀÌ
µé¾îÀÖ´Â È­ÀÏÀº ¼öÇà½ÃÅ°Áö ¸øÇÑ´Ù.
µÎ¹ø° Àμö arg0 Àº °ü·¹ÀûÀ¸·Î ¾ÕÀÚ¸®ÀÇ °æ·ÎÀ̸§À» Á¦°ÅÇÑ
ÇÁ·Î±×·¥ ¶Ç´Â ¸í·ÉÀÇ À̸§ÀÌ µÈ´Ù. ¸¶Áö¸· ÀÓÀ» ¾Ë¸®´Â Ç¥½Ã·Î
null Æ÷ÀÎÅÍ°¡ Á¸ÀçÇØ¾ß ÇÑ´Ù. µð·ºÅ丮¸¦ ³ª¿­ÇÏ´Â ÇÁ·Î±×·¥ ls ¸¦
¼öÇàÇϱâ À§ÇØ execl À» »ç¿ëÇÏ´Â
´ÙÀ½ÀÇ ÇÁ·Î±×·¥À» »ìÆ캸ÀÚ.


/* runls -- use "execl" to run ls */

main()

{

printf("executing ls\n");

execl("/bin/ls", "ls", "0l", (char *)

0);

/* If execl returns, the call has failed, so ... */

perror("execl failed to run ls");

exit(1);

}


execl ÀÌ ¼º°øÀûÀ¸·Î È£ÃâµÇ¸é È£Ãâ ÇÁ·Î±×·¥À» Á¦°ÅÇÏ¿© ¼öÇàµÇÁö
¾Ê°Ô ÇÏ°í, execl ÀÌ È£ÃâµÇÁö ¾Ê¾Æ È£Ãâ ÇÁ·Î±×·¥ÀÌ »ì¾Æ ³²À¸¸é
¿À·ù°¡ ¹ß»ýµÇµµ·Ï ÇÏ´Â °ÍÀÌ´Ù. ÀÌ·± ÀÌÀ¯·Î execl °ú
±× º¯Á¾µéÀÌ º¹±ÍµÉ¶§´Â Ç×»ó -1 À» µ¹·Á
ÁØ´Ù.

execv, execlp ¿Í execvp
execv ´Â 2 °³ÀÇ Àμö¸¸À» °¡Áø´Ù. ù°´Â ¼öÇàµÉ ÇÁ·Î±×·¥ÀÇ
°æ·ÎÀ̸§À» °¡Áö°í ÀÖ´Â ¹®ÀÚ¿­À» °¡¸®Å°´Â Æ÷ÀÎÅÍ µÑ°´Â
¹®ÀÚ Æ÷ÀÎÅÍÀÇ ¹è¿­·Î¼­

char *argv[];

·Î¼­ ¼±¾ðµÇ¾î ÀÖ´Ù.

/* runls2 -- use execv to run ls */


main()

{

char *av[3];


av[0] = "ls";
av[1] = "-l";
av[2] = (char *)0;

execv("/bin/ls", av);

/* again - getting this far implies error */

perror("execv failed");

exit(1);

}

execlp ¿Í execvp µµ execl °ú execv ¿Í °ÅÀÇ ºñ½ÁÇÏ´Ù.
°¡Àå Áß¿äÇÑ Â÷ÀÌ´Â
execlp¿Í execvp ÀÇ Ã¹¹ø° Àμö°¡ °æ·ÎÀ̸§ÀÌ ¾Æ´Ï¶ó ´Ü¼øÈ÷
È­ÀÏÀ̸§À» °¡¸®Å²´Ù´Â µ¥¿¡ ÀÖ´Ù.

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

 

Á¦ ¸ñ

Á¶È¸

³¯Â¥

±Û¾´ÀÌ

 

echo Server [Tcp]

9172

2002.01.19

echo


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