.\" Copyright (c) 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#) exec. 3 8.3 (Berkeley) 1/24/94 .\" %FreeBSD: src/lib/libc/gen/exec. 3, v 1.7. 2.7 2001/12/14 18:33:51 ru Exp % .\" .\" $FreeBSD: doc/ja_JP.eucJP/man/man3/exec. 3, v 1.4 2002/05/18 07:12:54 horikawa Exp $ .Dd January 24, 1994 .Dt EXEC 3 .Os .Sh ¸íĪ .Nm execl , .Nm execlp , .Nm execle , .Nm exect , .Nm execv , .Nm execvp .Nd ÆÄÀÏÀ» ½ÇÇàÇÑ´Ù .Sh ÇÁ·Î±×·¥ ¶óÀ̺귯¸® .Lb libc .Sh ¼­½Ä .In unistd.h .Vt extern char **environ ; .Ft int .Fn execl "const char *path" "const char *arg" ... .Ft int .Fn execlp "const char *file" "const char *arg" ... .Ft int .Fn execle "const char *path" "const char *arg" ... .Ft int .Fn exect "const char *path" "char *const argv[]" "char *const envp[]" .Ft int .Fn execv "const char *path" "char *const argv[]" .Ft int .Fn execvp "const char *file" "char *const argv[]" .Sh ÇØ¼³ .Fn exec ÆÐ¹Ð¸®ÀÇ ÇÔ¼ö´Â ÇöÀçÀÇ ÇÁ·Î¼¼½º À̹ÌÁö¸¦ »õ·Î¿î ÇÁ·Î¼¼½º À̹ÌÁö·Î µÎ¾î ¹Ù²ß´Ï´Ù. ÀÌ ¸Þ´º¾ó ÆäÀÌÁö·Î ¼³¸íÇÏ´Â ÇÔ¼ö´Â, ÇÔ¼ö .Xr execve 2 ÀÇ ÇÁ·ÐÆ®¿£µåÀÔ´Ï´Ù (ÇöÀçÀÇ ÇÁ·Î¼¼½ºÀÇ Ä¡È¯ÀÇ »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â, .Xr execve 2 ÀÇ ¸Þ´º¾ó ÆäÀÌÁö¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä). .Pp ÀÌ·¯ÇÑ ÇÔ¼öÀÇ Ãʱâ Àμö´Â, ½ÇÇàµÇ´Â ÆÄÀÏÀÇ ÆÐ½º¸íÀÔ´Ï´Ù. .Pp .Fn execl , .Fn execlp , ¹× .Fn execle ÀÇ °¢ ÇÔ¼öÀÇ .Fa "const char *arg" ¹× ÈļÓÀÇ »ý·« ±âÈ£´Â .Em arg0 , .Em arg1 , \&..., .Em argn (ÀÌ)¶ó°í »ý°¢ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. À̰͵éÀº ½ÇÇàµÇ¾ú´Ù ÇÁ·Î±×·¥¿¡ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â Àμö ¸®½ºÆ®¸¦ ³ªÅ¸³»´Â ³Î ij¸¯ÅÍ·Î ³¡³ª´Â string¸¦ °¡¸®Å²´Ù 1 °³(»ì) ¶Ç´Â º¹¼öÀÇ Æ÷ÀÎÅÍÀÇ ¸®½ºÆ®¸¦ ±â¼úÇÕ´Ï´Ù. °üÇàÀ¸·Î, ÃÖÃÊÀÇ Àμö´Â, ½ÇÇàÁßÀÇ ÆÄÀÏ¿¡ ´ëÀÀÇÏ´Â ÆÄÀϸíÀ» °¡¸®Å³ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀμöÀÇ ¸®½ºÆ®´Â .Dv NULL Æ÷ÀÎÅÍ·Î Á¾·á½ÃŲ´Ù .Em Çʿ䰡 ÀÖ¾î . .Pp .Fn exect , .Fn execv , ¹× .Fn execvp ÀÇ °¢ ÇÔ¼ö´Â, »õ·Î¿î ÇÁ·Î±×·¥¿¡ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â Àμö ¸®½ºÆ®¸¦ ³ªÅ¸³½´Ù ³Î ij¸¯ÅÍ·Î ³¡³ª´Â string¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍÀÇ ¹è¿­À» Á¦°øÇÕ´Ï´Ù. °üÇàÀ¸·Î, ÃÖÃÊÀÇ Àμö´Â, ½ÇÇàÁßÀÇ ÆÄÀÏ¿¡ ´ëÀÀÇÏ´Â ÆÄÀϸíÀ» °¡¸®Å³ Çʿ䰡 ÀÖ½À´Ï´Ù. Æ÷ÀÎÅÍÀÇ ¹è¿­Àº .Dv NULL Æ÷ÀÎÅÍ·Î Á¾·áÇÑ´Ù .Sy Çʿ䰡 ÀÖ¾î . .Pp .Fn execle (¿Í)°ú .Fn exect ÀÇ °¢ ÇÔ¼öµµ, ½ÇÇàµÈ ÇÁ·Î¼¼½ºÀÇ È¯°æÀ» ÁöÁ¤ÇÕ´Ï´Ù. ±×·¯±â À§Çؼ­´Â, ÆÄ¶ó¹ÌÅÍ ¸®½ºÆ®³»¿¡ ÀÖ´Â Àμö ¸®½ºÆ®¸¦ Á¾·á½ÃŲ´Ù .Dv NULL Æ÷ÀÎÅÍ, ¶Ç´Â Ãß°¡ ÆÄ¶ó¹ÌÅÍ¿Í ÇÔ²² argv ¹è¿­À» °¡¸®Å°´Â Æ÷ÀÎÅÍ¿¡ µû¸¨´Ï´Ù. ÀÌ Ãß°¡ÀÇ ÆÄ¶ó¹ÌÅÍ´Â, ³Î ij¸¯ÅÍ·Î ³¡³ª´Â string¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍÀÇ ¹è¿­À̸ç, .Dv NULL Æ÷ÀÎÅÍ·Î Á¾·áµÈ´Ù .Em Çʿ䰡 ÀÖ¾î . ´Ù¸¥ ÇÔ¼ö´Â, ÇöÀçÀÇ ÇÁ·Î¼¼½º³»ÀÇ ¿ÜºÎ º¯¼ö .Va environ (À¸)·ÎºÎÅÍ »õ·Î¿î ÇÁ·Î¼¼½º À̹ÌÁö¿ëÀÇ È¯°æÀ» ´Ù·ì´Ï´Ù. .Pp ÀÌ·¯ÇÑ ÇÔ¼ö¿¡´Â Ưº°ÇÑ Àǹ̷ÐÀÌ ÀÖ´Â °Íµµ ÀÖ½À´Ï´Ù. .Pp .Fn execlp (¿Í)°ú .Fn execvp ÀÇ °¢ ÇÔ¼ö´Â, ÁöÁ¤µÈ ÆÄÀÏ¸í¿¡ slash .Dq Li / ÇÏÁö¸¸ Æ÷ÇÔµÇÁö ¾ÊÀº °æ¿ì, ½ÇÇà °¡´É ÆÄÀÏÀ» °Ë»öÇØ ½©ÀÇ Ã³Ä¡¸¦ º¹Á¦ÇÕ´Ï´Ù. °Ë»ö ÆÐ½º´Â .Dq Ev PATH º¯¼ö¿¡ ÀÇÇØ ȯ°æ³»¿¡¼­ ÁöÁ¤µÈ ÆÐ½ºÀÔ´Ï´Ù. ÀÌ °ªÀÌ ÁöÁ¤µÇÁö ¾Ê´Â °æ¿ì, .Aq paths.h ÀÇ .Dv _PATH_DEFPATH Á¤ÀÇ¿¡ µû¶ó, µðÆúÆ®ÀÇ ÆÐ½º°¡ ¼³Á¤µË´Ï´Ù. À̰ÍÀº, .Dq Ev /bin:/usr/bin: (À¸)·Î ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù. °Ô´Ù°¡ ƯÁ¤ÀÇ ¿¡·¯°¡ Ưº°È÷ Ãë±ÞµË´Ï´Ù. .Pp ¿¡·¯°¡ ¾Ö¸ÅÇÑ °æ¿ì(°£´ÜÇÏ°Ô Çϱâ À§Çؼ­, ¿©±â¿¡¼­´Â .Er ENOEXEC ÀÌ¿ÜÀÇ ¸ðµç ¿¡·¯¸¦ ¾Ö¸Å¶ó°í »ý°¢ÇÕ´Ï´Ù. ´Ù¸¸, Ä¡¸íÀûÀÎ ¿¡·¯ .Er EACCES ¸¸ÀÌ ½Ç·Î ¾Ö¸ÅÇÕ´Ï´Ù), ÀÌ·¯ÇÑ ÇÔ¼ö´Â, ÆÄÀÏÀ» °³½ÃÇØ, ÆÄÀÏÀÌ Á¸ÀçÇÏ´ÂÁö, ±×¸®°í ÀûÀýÇÑ ½ÇÇà ÆÛ¹Ì¼ÇÀÌ ÀÖ´ÂÁö¸¦ ÆÇÁ¤ÇÏ´Â°Í °°ÀÌ µ¿ÀÛÇÕ´Ï´Ù. ±×·± °æ¿ì, ÀÌ·¯ÇÑ ÇÔ¼ö´Â .Fn execve ¿¡ ÀÇÇØ ¼³Á¤µÈ °ª¿¡ º¹¿øµÈ ±Û·Î¹ú º¯¼ö .Va errno ±×¸®°í Áï½Ã µ¹¾Æ¿É´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì, °Ë»öÀÌ °è¼ÓÇÕ´Ï´Ù. °Ë»öÀÌ .Fn execve ÀÇ ½ÇÇà¿¡ ¼º°øÇÏÁö ¾Ê°í, ¶Ç´Â ¿¡·¯¸¦ À§Çؼ­(¶§¹®¿¡) Á¾·áÇÏÁö ¾Ê°í ¿Ï·áÇϸé(ÀÚ), ÀÌ·¯ÇÑ ÇÔ¼ö´Â, ÀûÀýÇÑ ½ÇÇà ÆÛ¹Ì¼ÇÀÌ ÀÖ´Â Àû¾îµµ 1 °³ÀÇ ÆÄÀÏÀÌ ¹ß°ßµÇ¾ú´ÂÁö ¾î¶°Çß´ÂÁö¿¡ µû¶ó, ±Û·Î¹ú º¯¼ö .Va errno (À»)¸¦ .Er EACCES ¶Ç´Â .Er ENOENT (À¸)·Î ¼³Á¤ÇØ µ¹¾Æ¿É´Ï´Ù. .Pp ÆÄÀÏÀÇ Çì´õ°¡ ÀνĵÇÁö ¾Ê´Â´Ù(½ÃµµÇß´Ù .Fn execve ÇÏÁö¸¸ .Er ENOEXEC (À»)¸¦ µ¹·ÁÁÙ) °æ¿ì, ÀÌ·¯ÇÑ ÇÔ¼ö´Â, ÃÖÃÊÀÇ Àμö·Î¼­ ÆÄÀÏÀÇ ÆÐ½º°¡ ÀÖ´Â ½©À» ½ÇÇàÇÕ´Ï´Ù (ÀÌ ½Ãµµ°¡ ½ÇÆÐÇßÀ» °æ¿ì, ±× ÀÌ»óÀÇ °Ë»öÀº ÇàÇØÁöÁö ¾Ê½À´Ï´Ù). .Pp .Fn exect ÇÔ¼ö´Â, ÇÁ·Î±×·¥ Æ®·¹À̽º ±â´ÉÀ» À¯È¿ÇÏ°Ô ÇØ ÆÄÀÏÀ» ½ÇÇàÇÕ´Ï´Ù ( .Xr ptrace 2 (À»)¸¦ ÂüÁ¶). .Pp .Sh ¹Ýȯ°ª .Fn exec ÇÔ¼ö°¡ µ¹¾Æ¿ÔÀ» °æ¿ì, ¿¡·¯°¡ ¹ß»ýÇϰí ÀÖÀ» °ÍÀÔ´Ï´Ù. ¹Ýȯ°ªÀº \-1 À̾î, ±Û·Î¹ú º¯¼ö .Va errno ÇÏÁö¸¸ ¼³Á¤µÇ¾î ¿¡·¯¸¦ ³ªÅ¸³À´Ï´Ù. .Sh ÆÄÀÏ .Bl -tag -width /bin/sh -compact /bin/sh ½© .El .Sh ¿¡·¯ .Fn execl , .Fn execle , .Fn execlp ¹× .Fn execvp (Àº)´Â ó¸® ½ÇÆÐÇØ, ÇÁ·Î±×·¥ ¶óÀ̺귯¸® ÇÔ¼ö .Xr execve 2 ¹× .Xr malloc 3 ¿¡ ºÙ¾î ÁöÁ¤µÈ ¿¡·¯¸¦ ÁöÁ¤ÇÑ´Ù .Va errno (À»)¸¦ ¼³Á¤ÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. .Pp .Fn exect (¿Í)°ú .Fn execv (Àº)´Â, ÇÁ·Î±×·¥ ¶óÀ̺귯¸® ÇÔ¼ö .Xr execve 2 ¿¡ ºÙ¾î ÁöÁ¤µÈ ¿¡·¯¿¡ °ü°èÇØ .Va errno (À»)¸¦ ¼³Á¤ÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. .Pp .Sh °ü·Ã Ç׸ñ .Xr sh 1 , .Xr execve 2 , .Xr fork 2 , .Xr ktrace 2 , .Xr ptrace 2 , .Xr environ 7 .Sh ȣȯ¼º ¿ª»çÀûÀ¸·Î´Â .Fn execlp ÇÔ¼ö¿Í .Fn execvp ÇÔ¼öÀÇ µðÆúÆ®ÀÇ ÆÐ½º´Â .Dq Pa :/bin:/usr/bin ÀÔ´Ï´Ù. À̰ÍÀÌ, system security¸¦ Çâ»ó½Ã۱â À§Çؼ­(¶§¹®¿¡) ÇöÀçÀÇ µð·ºÅ丮¸¦ ¸¶Áö¸·À¸·Î ¹èÄ¡Çϵµ·Ï(µíÀÌ) º¯°æµÇ¾ú½À´Ï´Ù. .Pp ÆÄÀÏÀ» ½ÇÇàÇÏ·Á°í Çϰí ÀÖ´Â µ¿¾È¿¡ ¿¡·¯°¡ ¹ß»ýÇßÀ» ¶§ÀÇ .Fn execlp (¿Í)°ú .Fn execvp ÀÇ µ¿ÀÛÀº, ±×´ÙÁö ¿ª»çÀûÀÎ °üÇàÀÌ ¾Æ´Ï°í, Á¾·¡ºÎÅÍ ¹®¼­È­ µÇÁö ¾Ê°í, .Tn POSIX Ç¥ÁØÀ¸·Î ÁöÁ¤µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. .Pp Á¾·¡, .Fn execlp ÇÔ¼ö¿Í .Fn execvp ÇÔ¼ö´Â, »ó±âÀÇ °Í, ¹× .Er ETXTBSY , .Er ENOMEM (¿Í)°ú .Er E2BIG (À»)¸¦ Á¦¿ÜÇØ ¸ðµç ¿¡·¯¸¦ ¹«½ÃÇß½À´Ï´Ù. .Er ETXTBSY ±×¸®°í ÀÌ·¯ÇÑ ÇÔ¼ö´Â ¸îÃʰ£, sleeve ÇÑ ´ÙÀ½¿¡ Àç½ÃÇàÇØ, .Er ENOMEM (¿Í)°ú .Er E2BIG ±×¸®°í ÀÌ·¯ÇÑ ÇÔ¼ö´Â µ¹¾Æ°©´Ï´Ù. À̰͵éÀº ÇöÀç .Er ETXTBSY ¿¡ ºÙ¾î µ¹¾Æ¿Í, Á¸Àç¿Í ½ÇÇà °¡´É¼ºÀ» Á» ´õ ÁÖÀÇ ±í°Ô ÆÇÁ¤ÇÕ´Ï´Ù. ƯÈ÷, ÆÐ½º Á¢µÎ¾î³»ÀÇ ¾×¼¼½º ÇÒ ¼ö ¾ø´Â µð·ºÅ丮¸¦ ³ªÅ¸³½´Ù .Er EACCES ÇÏÁö¸¸, ºÎÀûÀýÇÑ ½ÇÇà ÆÛ¹Ì¼ÇÀÌ ÀÖ´Â ÆÄÀÏ¿¡ ´ëÇÑ .Er EACCES (¿Í)°ú È¥¶õµÇÁö ¾Ê°Ô µÇ¾î ÀÖ½À´Ï´Ù. .Bx 4.4 ±×¸®°í, ÀÌ·¯ÇÑ ÇÔ¼ö´Â, .Er EACCES , .Er ENOENT , .Er ENOEXEC ¹× .Er ETXTBSY ÀÌ¿ÜÀÇ ¸ðµç ¿¡·¯·Î µ¹¾Æ¿Ô½À´Ï´Ù. À̰ÍÀº Á¾·¡ÀÇ ¿¡·¯ 󸮺¸´Ù µÚ¶³¾îÁø °ÍÀ̾ú½À´Ï´Ù. ÆÐ½º Á¢µÎ¾î¿¡ ´ëÇÑ ¿¡·¯ÀÇ ¹«½Ã¸¦ Âõ¾î, ºñÁ¤»óÀ¸·Î ¾Ö¸ÅÇÑ ¿¡·¯ .Er EFAULT (¿Í)°ú ºñÁ¤»óÀÎ ¿¡·¯ .Er EIO ÀÇ Ã³¸®¸¦ °³·®ÇÒ »Ó(¸¸Å­)À̱⠶§¹®ÀÔ´Ï´Ù. µ¿ÀÛÀº .Xr sh 1 ÀÇ µ¿ÀÛ°ú ÀÏÄ¡Çϵµ·Ï(µíÀÌ) º¯°æµÇ¾ú½À´Ï´Ù. .Pp .Sh Ç¥ÁØ .Fn execl , .Fn execv , .Fn execle , .Fn execlp ¹× .Fn execvp ÇÏ .St -p1003.1-88 ¿¡ ÁذÅÇϰí ÀÖ½À´Ï´Ù.