공유 라이브러리 ( Dos: DLL ( Dynamic Link Library ) )
▶ 예를 들어 printf() 라는 함수는 Library 에서 경로를 통해 끌어다가 사용한다.
항상 실행될때 쓰이고, 실제로 App에 저장되어있지는 않다. 이렇게 사용되는 것이 "공유 라이브러리" 이다.
리눅스에서는 공유라이브러리, 윈도우에서는 DLL 이라한다.
명령어 예제 |
▶ gcc 가 공유 라이브러리를 사용하지 않게 해서 컴파일을 하면 용량이 늘어나는 것을 확인 할 수 있다. ▶ -static 을 파일 앞에 붙여 컴파일 ▶ size 를 알아보면 얼마만큼 붙었는지 알 수 있다. |
환경변수 (getenv, setenv, putenv) |
char * getenv(const char *name) : name 에 해당하는 환경변수 값을 넣으면 그 환경변수 경로를 확인 할 수 있을 것이다. ex ) getenv("PATH")
int putenv(char *str) : 문자열을 받아서 그대로 환경목록에 넣는다. 이미 존재하는 기존의 정의는 먼저 삭제되고 들어간다. ex ) putenv("PATH:/") : 다 지워진다 패스가.... 명령어로는 set PATH:/ 하면 다 지워지더라 .. int setenv(const char *name, const char *value, int rewrite) : 다시 설정해서 적어준다. 예제 #include <stdlib.h> #include <stdio.h> |
setjmp, longjmp 예제 |
▶ 소스의 흐름을 setjmp 에서 현재 위치를 저장하고, longjmp 를 호출하면 저장했던 위치로 점프한다. 전에 호출됬던 함수들은 스택에서 제거된다. int setjmp(jmp_buf env) 반환값 : 직접 호출된 경우네느 0 , longjmp 를 통해서 호출된 경우에는 0 이 아닌 값 void longjmp(jmp_buf env, int val) : 저장한 위치를 불러올때, val 에 따라 불러오는 위치가 다르겠다.
예제 #include <stdio.h> #include "apue.h" Main : Call One One Start! Two Start! ----------------------- Main End! 로 나온다. |
'UNIX 프로그래밍' 카테고리의 다른 글
2013.09.03_정리(수정중) (0) | 2013.09.04 |
---|---|
2013.09.04_수정중_ (0) | 2013.09.04 |
2013.09.02_4장 파일과 디렉터리 (0) | 2013.09.02 |
2013.08.30_UNIX_파일I/O_연산 및 함수 (0) | 2013.08.30 |
2013.08.29_UNIX 프로그래밍_3장_파일 I/O (2) | 2013.08.29 |