리눅스 및 유닉스에서 제공하는 시스템 함수에 관한 소개와 이를 이용한 예제코드를 통한 사용법에 대해 알아본다.

메모리 관련 함수

void *malloc(size_t size)

메모리 상에 동적으로 공간을 할당한다. 할당된 공간은 힙(heap) 상에 잡히며, 사용 후에는 동적으로 메모리 해제가 가능하다. 이점이 배열과 다른 점이다.
한번 할당이후에는 반드시 free() 를 이용하여 해제시켜야 한다. malloc() 함수가 수행되면, 리턴값으로 할당된 주소의 첫 주소값을 반환한다.

#include <stdlib.h>
...
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));
void *memcpy(void *dest, const void *src, size_t n)

복사하려는 원본 메모리영역(src) 에서 도착(?) 메모리영역(dest)으로 사이즈(n)만큼 복사한다.

#include <string.h>
...
	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;
void *memset(void *s, int c, size_t n)

메모리 영역(s)을 사이즈(n) 만큼 정수© 값으로 채운다.

#include <string.h>
...
	memset((void*)pfd,0x00,sizeof(DB_FD_T));   // 구조체(DB_FD_T) 사이즈 만큼 0 으로 채움

문자열 관련 함수

int strcmp(const char *s1, const char *s2)

두 개의 문자열을 비교한다. s1 과 s2 문자열이 같으면, 0 을 반환한다. s1 이 s2 보다 크면, 음수, 작으면 양수를 반환한다.

#include <string.h>
...
	if(strcmp(argv[1],"l") == 0)
	{
		flash_open(LOGICAL, size, input_addr, base_addr);
	}
int sprintf(char *str, const char *format, …);

입력된 포맷에 대해 원하는 출력의 형태로 변환 시킬 수 있다. 예를 들면, int 포맷의 변수를 string 포맷의 변수로 변경할 수 있다.

#include <stdio.h>
...
char str[128];
int input, output;
...
output = strtol(str, "%d", value);  // 십진수 형태인 int 변수 value 를 str 문자열 배열에 저장한다(int -> char).
strtol(const char *nptr, char **endptr, int base);

string 문자를 숫자로 변환한다. 예를 들면, string 변수를 8, 10, 16

#include <stdlib.h>
...
int result;
...
result = strtol(str, NULL, 2);

터미널 관련 함수

int tcsetattr(int fd, int optional_actions, struct termios *termios_p);

termios_p 가 가리키는 구조체 내에 터미널 인터페이스 변수의 현재 값을 저장한다. tcsetattr 을 호출하면 터미널 인터페이스를 다시 환경 설정할 수 있다.

  • computer/programming/시스템_함수.txt
  • Last modified: 3 years ago
  • by likewind