EXEC

Section: ¸®´ª½º ÇÁ·Î±×·¡¸Ó ¸Å´º¾ó (3)
Updated: 1993³â 11¿ù 29ÀÏ
Index
Return to Main Contents
 

À̸§

execl, execlp, execle, execv, execvp - ÆÄÀÏ ½ÇÇàÇÏ±â  

»ç¿ë¹ý

#include <unistd.h>

extern char **environ;

int execl( const char *path, const char *arg, ...);
int execlp( const char *file, const char *arg, ...);
int execle( const char *path, const char *arg , ..., char * const envp[]);
int execv( const char *path, char *const argv[]);
int execvp( const char *file, char *const argv[]);  

¼³¸í

exec ÇÔ¼ö °è¿­Àº ÇöÀç ÇÁ·Î¼¼½º À̹ÌÁö¸¦ »õ·Î¿î ÇÁ·Î¼¼½º À̹ÌÁö·Î ¹Ù²Û´Ù. ÀÌ ¸Å´º¾ó¿¡ ±â¼úµÈ ÇÔ¼öµéÀº execve(2) ÇÔ¼öÀÇ ÀüÀ§µéÀÌ´Ù. (ÇöÀç ÇÁ·Î¼¼½ºÀÇ ´ëü¿¡ °üÇÑ ¼¼ºÎÀûÀÎ Á¤º¸¸¦ ¿øÇϸé execve ¸Å´º¾ó ÆäÀÌÁö¸¦ Âü°íÇضó.)

À̵é ÇÔ¼öÀÇ Ãʱâ ÀÎÀÚ´Â ½ÇÇàµÇ¾î¾ß ÇÏ´Â ÆÄÀÏÀÇ °æ·Î¸íÀÌ´Ù.

const char *arg ¿Í execl, execlp, ±×¸®°í execle ÇÔ¼öµé¿¡ ÀÖ´Â ¿¬¼ÓÀûÀÎ °ÍµéÀº arg0, arg1, ..., argn µîÀ¸·Î »ý°¢ÇÒ ¼ö ÀÖ´Ù. ±×°ÍµéÀº ½ÇÇà ÇÁ·Î±×·¥ÀÌ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ÀÎÀÚ ¸®½ºÆ®¸¦ ³ªÅ¸³»´Â Çϳª³ª ±×ÀÌ»óÀÇ null·Î ³¡³­ ¹®ÀÚ¿­À» °¡¸®Å²´Ù.

ÆíÀǸ¦ À§ÇØ, óÀ½ ÀÎÀÚ´Â ½ÇÇàµÇ¾î¾ß ÇÒ ÆÄÀÏÀÇ À̸§ÀÌ´Ù. ÀÎÀÚ ¸®½ºÆ®´Â ¹Ýµå½Ã NULL Æ÷ÀÎÅÍ·Î ³¡³ª¾ß ÇÑ´Ù.

execv ¿Í execvp ÇÔ¼ö´Â »õ·Î¿î ÇÁ·Î±×·¥ÀÌ ÀÌ¿ëÇÒ¼ö ÀÖ´Â ÀÎÀÚ ¸®½ºÆ®¸¦ ³ªÅ¸³»´Â null·Î ³¡³­ ¹®ÀÚ¿­ÀÇ Æ÷ÀÎÅÍ ¹è¿­À» Á¦°øÇÑ´Ù. Æí¸®¸¦ À§ÇØ, ù ÀÎÀÚ´Â ½ÇÇàµÇ¾î¾ß ÇÒ ÆÄÀÏ°ú °ü·ÃµÈ ÆÄÀÏ À̸§ À» °¡¸®ÄÑ¾ß ÇÑ´Ù. Æ÷ÀÎÅÍ ¹è¿­Àº ¹Ýµå½Ã NULL Æ÷ÀÎÅÍ·Î ³¡³ª¾ß ÇÑ´Ù.

execle ÇÔ¼ö´Â ¶ÇÇÑ ½ÇÇà ÇÁ·Î¼¼¼­ÀÇ È¯°æº¯¼ö¸¦ ÁöÁ¤ÇØ¾ß Çϸç, ÆĶó¹ÌÅÍ ¸®½ºÆ®¿¡ ÀÖ´Â ÀÎÀÚ ¸®½ºÆ®³ª Ãß°¡ÀûÀÎ ÆĶó¹ÌÅ͸¦ °¡Áö°í ÀÖ´Â argv ¹è¿­¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ³¡¸¶Ä¡µµ·Ï NULL Æ÷ÀÎÅÍ°¡ µÚµû¶ó ¿Â´Ù. ÀÌ·¯ÇÑ Ãß°¡ÀûÀÎ ÆĶó¹ÌÅÍ´Â null·Î ³¡³­ ¹®ÀÚ¿­¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ¹è¿­ÀÌ¸ç ¹Ýµå½Ã NULL ·Î ³¡³ª¾ß ÇÑ´Ù. ´Ù¸¥ ÇÔ¼öµéÀº ÇöÀç ÇÁ·Î¼¼½º¿¡ ÀÖ´Â ¿ÜºÎ º¯¼ö environ ¿¡¼­ »õ·Î¿î ÇÁ·Î¼¼½º À̹ÌÁö¸¦ À§ÇÑ È¯°æ º¯¼ö¸¦ °¡Á®¿Â´Ù.

À̵é ÇÔ¼öµé Áß ¸î¸îÀº Ưº°ÇÑ Àǹ̸¦ °¡Áö°í ÀÖ´Ù.

¸¸ÀÏ ÁöÁ¤µÈ ÆÄÀÏ À̸§ÀÌ slash(/) ¹®ÀÚ¸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù¸é execlp ¿Í execvp ÇÔ¼ö´Â ½ÇÇàÆÄÀÏÀ» ã±â À§ÇØ shell ÀÇ ÇൿÀ» º¹»çÇÑ´Ù. Ž»ö °æ·Î´Â PATH º¯¼ö¿¡ ÁöÁ¤µÈ °æ·ÎÀÌ´Ù. ÀÌ º¯¼ö°¡ ÁöÁ¤µÇÁö ¾Ê´Â´Ù¸é, ±âº» °æ·Î ``:/bin:/usr/bin''°¡ »ç¿ëµÈ´Ù. Ãß°¡ÀûÀ¸·Î, ¾î¶² ¿¡·¯µéÀº Ưº°ÇÏ°Ô Ã³¸®µÈ´Ù.

¸¸ÀÏ Çã°¡±ÇÀÌ ÆÄÀÏ¿¡ ±ÝÁöµÇ¾î ÀÖ´Ù¸é ( execve ´Â EACCES¸¦ ¹ÝȯÇÑ´Ù.), À̵é ÇÔ¼öµéÀº Ž»ö °æ·ÎÀÇ ³ª¸ÓÁö¸¦ °è¼ÓÇؼ­ Ž»öÇÑ´Ù. ±×·¯³ª ¸¸ÀÏ ¾î¶² ´Ù¸¥ ÆÄÀÏÀÌ ¹ß°ßµÈ´Ù¸é, Àü¿ª º¯¼ö errno ¸¦ EACCES·Î ¼³Á¤ÇÏ°í ¹ÝȯµÈ´Ù.

¸¸ÀÏ ÆÄÀÏÀÇ Çì´õ°¡ ÀνĵÇÁö ¾Ê´Â´Ù¸é( execve ´Â ENOEXEC¸¦ ¹ÝȯÇÑ´Ù), À̵é ÇÔ¼öµéÀº ù ÀÎÀڷνá ÆÄÀÏÀÇ °æ·Î¿¡ ÀÖ´Â shellÀ» ½ÇÇàÇÑ´Ù. (¸¸ÀÏ ÀÌµé ½Ãµµ°¡ ½ÇÆÐÇÑ´Ù¸é, Ãß°¡ÀûÀΠŽ»öÀº ÇàÇØÁöÁö ¾Ê´Â´Ù.)  

¹Ýȯ°ª

¸¸ÀÏ exec ÇÔ¼öµéÀÌ ¹ÝȯÇÑ´Ù¸é, ¿¡·¯°¡ ÀϾ °ÍÀÌ´Ù. ¹Ýȯ °ªÀº -1À̸ç, Àü¿ª º¯¼ö errno ´Â ¿¡·¯¸¦ °¡¸®Å°µµ·Ï ¼³Á¤µÈ´Ù.  

ÆÄÀÏ

/bin/sh  

¿¡·¯

À̵é ÇÔ¼ö ¸ðµÎ´Â ½ÇÆÐÇÒ¼ö ÀÖÀ¸¸ç ¶óÀ̺귯¸® ÇÔ¼ö execve(2)¿¡ ÁöÁ¤µÈ ¿¡·¯Áß ¾î¶² °ÍÀ¸·Î errno °¡ ¼³Á¤µÈ´Ù.  

°ü·Ã Ç׸ñ

sh(1), execve(2), fork(2), environ(5), ptrace(2)  

ȣȯ

¸î¸î ´Ù¸¥ ½Ã½ºÅÛ¿¡¼­ ±âº» PATH´Â anti-Trojan-horse ó·³ /bin ±×¸®°í /usr/binÈÄ¿¡ ³ª¿­µÈ ÇöÀç ÀÛ¾÷ µð·ºÅ丮¸¦ °¡Áø´Ù. libc 5.4.7¿¡¼­, ¸®´ª½º´Â ¿©ÀüÈ÷ ÇöÀç ÀÛ¾÷ µð·ºÅ丮¸¦ ±âº» PATH·Î »ç¿ëÇÑ´Ù.

ÆÄÀÏÀ» ½ÇÇàÇÏ´Â µ¿¾È ¿¡·¯°¡ ³ªÅ¸³µÀ» ¶§ execlp ±×¸®°í execvp ÀÇ ÇൿÀº ¿ª»çÀû °ü½À¿¡ µû¸¥´Ù. ±×·¯³ª ÀüÅëÀûÀ¸·Î ¹®¼­È­µÇÁö ¾ÊÀ¸¸ç POSIX Ç¥ÁØ¿¡µµ ÁöÁ¤µÇÁö ¾Ê´Â´Ù. BSD(±×¸®°í ´Ù¸¥ ½Ã½ºÅÛ)´Â ÀÚµ¿ÀûÀ¸·Î sleepÀ» ÇÏ¸ç ¸¸ÀÏ ETXTBSY¸¦ ¸¸³­´Ù¸é ´Ù½Ã ½ÃµµÇÑ´Ù. Linux´Â ¾î·Á¿î ¿¡·¯·Î ´ëÇÏ°í ¹Ù·Î ¹ÝȯÇÑ´Ù.

ÀüÅëÀûÀ¸·Î, ÇÔ¼ö execlp ¿Í execvp ´Â À§¿¡ ±â¼úµÈ °Íµé ±×¸®°í ENOMEM ±×¸®°í E2BIG¸¦ Á¦¿ÜÇÑ ¸ðµç ¿¡·¯¸¦ ¹«½ÃÇÏ¸ç ¸®ÅϵȴÙ. À̵é ÇÔ¼ö´Â À§¿¡ ±â¼úµÈ °Íµé ÀÌ¿ÜÀÇ ¿¡·¯¸¦ ¸¸³­´Ù¸é ¹Ù·Î ¸®ÅϵȴÙ.  

Ç¥ÁØ

Execl, execv, execle, execlp ±×¸®°í execvp ´Â IEEE Std1003.1-88 (``POSIX.1'')¸¦ µû¸¥´Ù.  

¹ø¿ª

Á¤°­ÈÆ <skyeyes@soback.kornet.net> 2001³â 3¿ù 8ÀÏ
ÇÑ±Û Manpage ÇÁ·ÎÁ§Æ® (http://man.kldp.org) 2005³â 2¿ù 17ÀÏ


 

Index

À̸§
»ç¿ë¹ý
¼³¸í
¹Ýȯ°ª
ÆÄÀÏ
¿¡·¯
°ü·Ã Ç׸ñ
ȣȯ
Ç¥ÁØ
¹ø¿ª

This document was created by man2html, using the manual pages.
Time: 08:01:35 GMT, February 17, 2005