====== 시스템 함수 ====== 리눅스 및 유닉스에서 제공하는 시스템 함수에 관한 소개와 이를 이용한 예제코드를 통한 사용법에 대해 알아본다. ====== 메모리 관련 함수 ====== ===== malloc() ===== | void *malloc(size_t size) | ==== 기능 ==== 메모리 상에 동적으로 공간을 할당한다. 할당된 공간은 힙(heap) 상에 잡히며, 사용 후에는 동적으로 메모리 해제가 가능하다. 이점이 배열과 다른 점이다. 한번 할당이후에는 반드시 free() 를 이용하여 해제시켜야 한다. malloc() 함수가 수행되면, 리턴값으로 할당된 주소의 첫 주소값을 반환한다. ==== 예제 코드 ==== #include ... typedef struct _tag_DB_OP { int type; BTREE_NODE_T * start_addr; BTREE_NODE_T * end_addr; DUMMY_NODE_T * dummy_addr; int (*insert)(int value); int (*delete)(int value); int (*print)(); }DB_OP_T; ... DB_OP_T * set_db; ... set_db = (DB_OP_T *)malloc(sizeof(DB_OP_T)); ===== memcpy() ===== | void *memcpy(void *dest, const void *src, size_t n) | ==== 기능 ==== 복사하려는 원본 메모리영역(src) 에서 도착(?) 메모리영역(dest)으로 사이즈(n)만큼 복사한다. ==== 예제 코드 ==== #include ... set_db = (DB_OP_T *)malloc(sizeof(DB_OP_T)); set_db->type = db_type; set_db->dummy_addr = 0; set_db->start_addr = 0; set_db->end_addr = 0; memcpy((void *)set_db,(void *)db_ops[set_db->type],sizeof(DB_OP_T)); // set_db 와 db_ops[set_db->type] 은 같은 구조체 이여야 함 return 0; == memset() == | void *memset(void *s, int c, size_t n) | ==== 기능 ==== 메모리 영역(s)을 사이즈(n) 만큼 정수(c) 값으로 채운다. ==== 예제 코드 ==== #include ... memset((void*)pfd,0x00,sizeof(DB_FD_T)); // 구조체(DB_FD_T) 사이즈 만큼 0 으로 채움 ====== 문자열 관련 함수 ====== ===== strcmp() ===== | int strcmp(const char *s1, const char *s2) | ==== 기능 ==== 두 개의 문자열을 비교한다. s1 과 s2 문자열이 같으면, 0 을 반환한다. s1 이 s2 보다 크면, 음수, 작으면 양수를 반환한다. ==== 예제 코드 ==== #include ... if(strcmp(argv[1],"l") == 0) { flash_open(LOGICAL, size, input_addr, base_addr); } ===== sprintf() ===== | int sprintf(char *str, const char *format, ...); | ==== 기능 ==== 입력된 포맷에 대해 원하는 출력의 형태로 변환 시킬 수 있다. 예를 들면, int 포맷의 변수를 string 포맷의 변수로 변경할 수 있다. ==== 예제 코드 ==== #include ... char str[128]; int input, output; ... output = strtol(str, "%d", value); // 십진수 형태인 int 변수 value 를 str 문자열 배열에 저장한다(int -> char). ===== strtol() ===== | strtol(const char *nptr, char **endptr, int base); | ==== 기능 ==== string 문자를 숫자로 변환한다. 예를 들면, string 변수를 8, 10, 16 ==== 예제 코드 ==== #include ... int result; ... result = strtol(str, NULL, 2); ====== 터미널 관련 함수 ====== ===== tcgetattr() ===== | int tcsetattr(int fd, int optional_actions, struct termios *termios_p); | ==== 기능 ==== termios_p 가 가리키는 구조체 내에 터미널 인터페이스 변수의 현재 값을 저장한다. tcsetattr 을 호출하면 터미널 인터페이스를 다시 환경 설정할 수 있다. ==== 예제 코드 ==== ---- {{indexmenu>:#1|skipns=/^(wiki|etc|diary|playground)$/ skipfile=/^(todays|about|guestbook)$/ nsort rsort}} ----