====== 시스템 함수 ======
리눅스 및 유닉스에서 제공하는 시스템 함수에 관한 소개와 이를 이용한 예제코드를 통한 사용법에 대해 알아본다.
====== 메모리 관련 함수 ======
===== 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}}
----