ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
[yundream@localhost test]$ set HOME=/home/yundream BASH=/bin/bash LANG=en_US TERM=xterm-color LD_LIBRARY_PATH=/usr/local/lib:/usr/local/mysql/lib PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin ....
½©»ó¿¡¼ echo ¸í·É¾î¸¦ ÅëÇØ¼µµ °¡´ÉÇÏ´Ù. [yundream@localhost test]$ echo $HOME /home/yundreamÀ§ÀÇ È¯°æº¯¼öµéÀÌ ¼¼ÆÃµÇ¾î Àֱ⠶§¹®¿¡, ÇØ´ç ÇÁ·Î±×·¥µéÀº ÇöÀç »ç¿ëÀÚ°¡ ¾î¶² Å͹̳ÎÀ» »ç¿ëÇÏ´ÂÁö, ¾î¶² ¾ð¾îȯ°æÀÎÁö, ½ÇÇàÇÁ·Î±×·¥À» ã±â À§Çؼ ¾î¶² µð·ºÅ丮¸¦ °Ë»öÇØ¾ß ÇÏ´ÂÁö¸¦ ¾Ë¼ö ÀÖ°Ô µÈ´Ù. ÀÌ·¯ÇÑ È¯°æº¯¼öÀÇ Á¶ÀÛÀº setenv(3), getenv(3), putenv(3) ¸¦ ÅëÇØ¼ ÀÌ·ç¾îÁø´Ù. #include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define LOG_FILE_NAME "my.dump"
int main(int argc, char **argv)
{
char *tmp_dir;
char log_file[30];
char *my_env;
int fd;
if ((tmp_dir = getenv("TMP_DIR")) ==NULL)
{
printf("TMP_DIR ÀÌ ¼¼ÆÃµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù\n"
"TMP_DIR ¸¦ ¸ÕÀú ¼¼ÆÃÇÏ¼Å¾ß ÇÕ´Ï´Ù\n");
exit(0);
}
memset(log_file, '\0', 30);
sprintf(log_file, "%s/%s", tmp_dir, LOG_FILE_NAME);
printf("log_file is %s\n", log_file);
printf("your home directory is %s\n", getenv("HOME"));
my_env = (char *) malloc(40);
memset(my_env, '0', 40);
sprintf(my_env, "%s=%s", "USER_ENV", "hello yundream");
putenv("TEST_ENV=hello world");
putenv(my_env);
printf("¿©±â¿¡¼ ºÎÅÍ´Â execl\n");
execl("/bin/sh","sh",0);
}
À§ÀÇ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ÇØ¼ ½ÇÇà½ÃÄÑ º¸ÀÚ. óÀ½¿¡ ½ÇÇà½Ã۸é, TMP_DIR ȯ°æº¯¼ö¸¦ °Ë»çÇØ¼ ÀÌ °ªÀÌ ¼¼ÆÃµÇ¾î ÀÖÁö ¾ÊÀ¸¸é ¿¡·¯¸Þ½ÃÁö¸¦ º¸³»°í ÇÁ·Î±×·¥ÀÌ Á¾·áµÇµµ·Ï µÇ¾î ÀÖ´Ù. ±×·¯¹Ç·Î ¸ÕÀú TMP_DIRÀ» ¼¼ÆÃÇØ ÁÖ¾î¾ß ÇÑ´Ù.
bash ½©À̶ó¸é [yundream @localhost test]$ export TMP_DIR="/tmp"
csh ½©À̶ó¸é [yundream @localhost test]$ setenv TMP_DIR="/tmp"·Î ¼³Á¤ÇÒ¼ö ÀÖ´Ù. ȯ°æº¯¼ö TMP_DIR ÀÇ ¼³Á¤À» ¸¶Ä¡°í ÇÁ·Î±×·¥À» ½ÇÇàÇϸé, setenv ¸¦ ÅëÇØ¼ ȯ°æº¯¼ö TMP_DIR ÀÇ ³»¿ë°ú HOME ÀÇ ³»¿ëÀ» Á¦´ë·Î °¡Á®¿ÈÀ» º¼¼ö ÀÖÀ»°ÍÀÌ´Ù.
±×¸®°í putenv() ¸¦ ÀÌ¿ëÇØ¼ »õ·Î¿î ȯ°æº¯¼ö¸¦ ¼³Á¤Çß´Ù. putenv ÀÇ »ç¿ë¹ýÀº ½©¿¡¼ ó·³ º¯¼ö¸í=°ª ÀÇ Çü½ÄÀ¸·Î ¼³Á¤ÇϸéµÈ´Ù. ÁÖÀÇ ÇÒÁ¡Àº putenv() ¿¡ °ªÀ» ÀÔ·ÂÇÒ¶§, char * ÇüÀϰæ¿ì ¹Ýµå½Ã ¸Þ¸ð¸® ÇÒ´çÀ» ÇÑ °ªÀ» ÀÔ·ÂÇØ¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù.
putenv ¸¦ ¸¶Ä¡°í ³ª¸é execl ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ »õ·Î ½©À» ¶ç¿î´Ù. »õ·Î ¶á ½©¿¡¼ echo $USER_ENV, echo $TEST_ENV ¸í·ÉÀ» »ç¿ëÇØ º¸¸é putenv ¸¦ ÅëÇÑ È¯°æ ¼³Á¤ÀÌ Á¦´ë·Î Àû¿ëµÇ¾úÀ½À» ¾Ë¼ö ÀÖÀ»°ÍÀÌ´Ù. ±×·¯³ª exit ¸¦ ÅëÇØ¼ ¿ø·¡ ½©·Î µÇµ¹¾Æ¿Â ´ÙÀ½¿¡ echo ¸¦ ÀÌ¿ëÇØº¸¸é USER_ENV, TEST_ENV ÀÇ °ªÀÌ Ãâ·ÂµÇÁö ¾ÊÀ½À» º¸°Ô µÉ°ÍÀÌ´Ù.
putenv ¿Í setenv ¸¦ ÅëÇØ¼ ¼³Á¤µÈ ȯ°æº¯¼ö´Â ÇöÀçÇÁ·Î±×·¥°ú ±× ÇÁ·Î±×·¥¿¡¼ ÆÄ»ýµÈ(fork ȤÀº exel µÈ) ÇÁ·Î±×·¥¿¡¸¸ Àû¿ëµÇ±â ¶§¹®ÀÌ´Ù.
ȯ°æº¯¼ö¸¦ Á¦´ë·Î »ç¿ëÇϸé ÇÁ·Î±×·¥ÀÇ ÀÛ¼ºÀÌ ¸Å¿ì °£ÆíÇØÁüÀ» ¾Ë¼ö ÀÖ´Ù. ¸Å¹ø º¹ÀâÇÏ°Ô ÇÁ·Î±×·¥ÀÇ Àμö·Î ÇÁ·Î±×·¥À» ÀÛµ¿½Ã۴µ¥ ÇÊ¿äÇÑ °¢Á¾ ¼³Á¤À» ÀÔ·ÂÇÒ Çʿ䵵 ¾ø°í, ÇÁ·Î±×·¡¹Ö Çϱ⠰ï¶õÇÑ ¼³Á¤ÆÄÀÏÀ» ÆÄ½ÌÇÏ´Â ·çƾÀ» ¸¸µéÇʿ䵵 ¾ø±â ¶§¹®ÀÌ´Ù.
´ÜÁ¡Àº ÇÁ·Î±×·¥ÀÇ »ç¿ëÀÚ¿¡°Ô »ç¿ë»óÀÇ È¥¶õÀ» ÁÙ¼ö°¡ ÀÖ´Ù´Â Á¡°ú, ȯ°æº¯¼öÀÇ Æ¯¼º»ó, ÇØ´çȯ°æº¯¼ö¸¦ 100% ½Å·ÚÇÒ¼ö ¾ø´Ù¶ó´Â ¹®Á¦°¡ ±×°ÍÀÌ´Ù. ¹°·Ð ÀüÀÚÀÇ °æ¿ì´Â »ç¿ëÀÚ¿¡°Ô ¸Þ´º¾óÀ» ¼÷ÁöÇÒ¼ö ÀÖµµ·ÏÇØÁÖ¸é µÇ°í (¿À¶óŬÀ» ¼³Ä¡ÇÒ°æ¿ìµµ ¿ì¸®´Â ¿À¶óŬ ¼³Ä¡¿¡ ÇÊ¿äÇÑ ¸¹Àº ȯ°æ¼³Á¤À» À§Çؼ ¸Þ´º¾óÀ» ¼÷ÁöÇØ¾ß ÇÑ´Ù). ÈÄÀÚÀÇ °æ¿ìµµ À̷лó 100% ½Å·ÚÇÒ¼ö ¾ø´Ù¶ó´Â °ÍÀ̰í, ¾à°£¸¸ ÁÖÀǸ¦ ±â¿ïÀÎ´Ù¸é ¹®Á¦ ¹ß»ýÀÇ ¿©Áö´Â °ÅÀÇ ¾ø´Ù°í ÇÒ¼ö ÀÖ´Ù.
ȯ°æº¯¼ö´Â ÇÁ·Î¼¼½ºÀÇ ½ºÅÿµ¿µ¿¡ ÀúÀåµÇµÇ°í, putenv(), getenv()´Â ½ºÅÿµ¿µ¿¡ ´ëÇÑ »ç¿ëÀÚ ·¹º§¿¡¼ÀÇ Á¦¾î¸¦ °¡´ÉÇϵµ·Ï µµ¿ÍÁØ´Ù. À̿ܿ¡µµ Á»´õ ³·Àº ¼öÁØ¿¡¼ ȯ°æº¯¼ö¸¦ ÀÐ¾î ¿Ã ¼ö Àִµ¥, main()ÇÔ¼öÀÇ 3¹øÂ° ÀÎÀÚ¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. main()ÇÔ¼öÀÇ 3¹øÂ° ÀÎÀڴ ȯ°æº¯¼ö°¡ ÀúÀåµÈ ÁÖ¼Ò¸¦ °¡¸£Å°¸ç, ¿ì¸®´Â ÀÌ Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇØ¼ ȯ°æº¯¼ö¸¦ ¾ò¾î¿Ã ¼ö ÀÖ´Ù. ´ÙÀ½Àº °£´ÜÇÑ ¿¹Á¦ ÄÚµå´Ù
#include <unistd.h> #include <stdio.h> int main(int argc, char **argv, char **env) { while(*env) { printf("%s\n", *env); env++; } }À§ÀÇ ÇÁ·Î±×·¥À» ½ÇÇà½ÃŰ¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ Ãâ·ÂÇÒ °ÍÀÌ´Ù. °á°ú´Â ¹°·Ð ½Ã½ºÅÛ¿¡ µû¶ó¼ ´Þ¶óÁú ¼ö ÀÖ´Ù. [root@yundream test]# ./env SSH_AGENT_PID=997 KDE_MULTIHEAD=false HOSTNAME=yundream TERM=xterm SHELL=/bin/bash DESKTOP_STARTUP_ID=yundream;1079054007;831298;1040 HISTSIZE=1000 GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/root/.gtkrc-2.0:/root/.kde/share/config/gtkrc GS_LIB=/root/.fonts GTK_RC_FILES=/etc/gtk/gtkrc:/root/.gtkrc:/root/.kde/share/config/gtkrc WINDOWID=62914580 OLDPWD=/root QTDIR=/usr/lib/qt-3.2 KDE_FULL_SESSION=true USER=root .... |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|