์ค๋ ๋ค๋ฃฐ ๋ด์ฉ์ ์๋์ ๊ฐ๋ค.
- ๋ช ๋ น์ด ํ ํ๋ผ๋ฏธํฐ์ ์ฒ๋ฆฌ
- ํ๊ฒฝ ๋ณ์์ ์ฒ๋ฆฌ
ํ๋ผ๋ฏธํฐ์ ์ฒ๋ฆฌ
UNIX์์๋ cli์ ์ ๋ ฅํ ๋ช ๋ น์ด ์ด๋ฆ, ์ต์ , ํ์ผ ๋ฑ์ main์ ์ธ์๋ก ์ ๋ฌํ ์ ์๋ค. ์ค๋์ ์ด๋ ๊ฒ cli์ ๊ฒฐํฉํ์ฌ ํ๋ก๊ทธ๋๋ฐํ๋ ๋ฒ์ ๊ธฐ์ด๋ฅผ ๋ฐฐ์๋ณด๊ฒ ๋ค.
int main(int argc, char* argv[])
// int argc; ํ๋ผ๋ฏธํฐ์ ์
// char* argv[]; ํ๋ผ๋ฏธํฐ๋ค๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด ๋ฐฐ์ด
argc์ argv์ ๊ตฌ์กฐ๋ ์๋์ฒ๋ผ ๋ํ๋ผ ์ ์๋ค.
์๋ฅผ ๋ค์ด sample์ด๋ผ๋ ํ๋ก๊ทธ๋จ์ด ์๋ค๊ณ ํ๊ณ ๋ค์ ์ธ์๋ฅผ ์ ๋ ฅํด์คฌ๋ค๊ณ ๊ฐ์ ํ์
sample aaa bbb ccc
์ฐ๋ฆฌ๊ฐ ๋ฆฌ๋ ์ค ํฐ๋ฏธ๋์์ ๋ช ๋ น์ด ๋ค์ ํ๋ผ๋ฏธํฐ ๋ณด๋ด๋ ๊ฒ๊ณผ ์๋ฒฝํ๊ฒ ๋์ผํ๋ค.
์ด ๊ฒฝ์ฐ argc=4, argv๋ ["sample","aaa","bbb","ccc",NULL]์ด๋ผ๋ ๋ฐฐ์ด์ด ๋๋ค.
์ฃผ์ํ ๊ฒ์ argv์ ๋ง์ง๋ง ์์๋ NULL์ด ๋๋ค๋ ์ ์ด๋ค.
argc, argv ์์ฐจ์ ์ผ๋ก ์ถ๋ ฅํ๊ธฐ
[ ์ฝ๋ ]
for๋ฌธ์ argv[i]๋, argv[i]!=NULL ์ผ ๋๊น์ง๋ง ์คํํ๋ผ๋ ์๋ฏธ์ด๋ค. argv์ ๋งจ ๋ง์ง๋ง ์์๋ NULL์ด๋ฏ๋ก!!
์ด๋ i<argc ์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋๋ค.
[ ์คํ๊ฒฐ๊ณผ ]
ํ๊ฒฝ๋ณ์์ ์ฒ๋ฆฌ
์์์ char* envp[]๋ฅผ ์ถ๊ฐํ๋ฉด ํ๊ฒฝ ๋ณ์ ์ ๋ณด ๋ํ ๋ฐ์ ์ ์๋ค. ๊ด๋ จ ๋ด์ฉ์ ์ฌ๊ธฐ : [Linux] ํ๊ฒฝ๋ณ์์ ํ๊ฒฝ๋ณ์ PATH๋? (+๋ช ๋ น์ด๋ฅผ ์ฐพ๋ ๊ฒฝ๋ก์ ์ ์ฐจ, PATH ๊ณต๊ฒฉ)
int main(int argc, char* argv[], char* envp[])
// char envp* [] ; ํ๊ฒฝ๋ณ์ ๋ฌธ์์ด์ ๋ฐฐ์ด
envp ๋ํ ๋งจ ๋ง์ง๋ง ์์๊ฐ NULL์ด์ด์ผ ํ๋ค.
envp ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค. ๊ฐ ์์๋ "ํ๊ฒฝ๋ณ์์ด๋ฆ=๋ด์ฉ" ์ด๋ฐ์์ผ๋ก ์ ์ฅ๋์ด์๋ค!
envp[]๋ ์ฐ๋ฆฌ๊ฐ ํ์ฌ ์ฌ์ฉํ๋ ์์คํ ์ ํ๊ฒฝ๋ณ์ ์ ๋ณด๋ฅผ ๋ค ๊ฐ์ ธ์ค๋ ๊ฒ ๊ฐ๋ค.
envp๋ฅผ ์ถ๋ ฅํด๋ณด์
[ ์ฝ๋ ]
์ ์ฝ๋๋ฅผ ์ปดํ์ผํ ํ ์คํํ๋ export์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์๋ค. (export๋ ํ๊ฒฝ๋ณ์ ์ถ๋ ฅํ๋ ๋ช ๋ น์ด)
getenv(), setenv()
#include <stdlib.h>
char *getenv(const char* name); //name์ ์ฐพ๊ณ ์ํ๋ ํ๊ฒฝ๋ณ์ ์ด๋ฆ ๋ฌธ์์ด ex)SHELL
int setenv(const char* name,const char* value, int overwrite)
// const char* name; ์ค์ ํ๊ณ ์ถ์ ํ๊ฒฝ๋ณ์ ์ด๋ฆ
// const char* value; ๋ณ๊ฒฝ ํน์ ์ถ๊ฐํ๊ณ ์ถ์ ํ๊ฒฝ๋ณ์ ๊ฐ
// int overwrite; (1์ด๋ฉด overwrite, 0์ด๋ฉด overwrite x)
// ์ฑ๊ณตํ๋ฉด 0, ์คํจํ๋ฉด -1 ๋ฐํ
getenv(ํ๊ฒฝ๋ณ์์ด๋ฆ)๋ก ํ๊ฒฝ๋ณ์ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๊ณ ,
setenv(ํ๊ฒฝ๋ณ์์ด๋ฆ,๊ฐ,overwrite๋นํธ)๋ฅผ ํตํด ํ๊ฒฝ๋ณ์๋ฅผ ์ธํ ํ ์ ์๋ค.
setenv์์ name์ด ๊ธฐ์กด ํ๊ฒฝ๋ณ์ ๋ฆฌ์คํธ์ ์๋ ๊ฒฝ์ฐ ๊ทธ๋ฅ ์ถ๊ฐ๊ฐ ๋๊ณ , ๋ฆฌ์คํธ์ ์๋ ๊ฒฝ์ฐ overwrite ํ๋๊ทธ์ ๋ฐ๋ผ ์ค์ ์ฌ๋ถ๊ฐ ๋ฌ๋ผ์ง๋ค.
getenv๋ก SHELL ๋ณ์ ๊ฐ์ ๊ฐ์ ธ์๊ณ , ์ด๋ฅผ setenv๋ก ์์ ํ๋ค.
์ด์ธ ํ๊ฒฝ๋ณ์ ๊ด๋ จ ํจ์๋ค
- putenv() - ํ๊ฒฝ๋ณ์ ์ถ๊ฐ
- unsetenv() - ์ง์ ํ ํ๊ฒฝ๋ณ์ ์ ๊ฑฐ
- clearenv() - ํ๊ฒฝ๋ณ์ ์ ๋ถ๋ฅผ ์ ๊ฑฐ
์ด์ฒ๋ผ ์ฝ๋์์ฑ๋ง์ ํตํด ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ผ๋ ์กฐ์ฌํด์ ์ฌ์ฉํ์
- ์ ๊ธ์ UNIX ์์คํ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์์ ๊ธ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.