전체 글
-
C/C++ malloc(3)C,C++ & Linux 2020. 5. 22. 18:52
함수 기능 힙 메모리를 할당하는 함수입니다. Linux / Unix는 가용한 힙 메모리를 자유 공간 블럭(free memory block)의 리스트로 관리합니다. 이를 자유 공간 풀(free memory pool)이라고도 부르는데 malloc() 계열의 함수를 호출하게되면 이 리스트를 정해진 알고리즘으로 탐색하여 적절한 크기를 가진 메모리를 찾고 해당 메모리의 주소를 리턴하는 것입니다. 힙 메모리에 할당 받은 메모리는 함수가 끝나더라도 할당 해제 되지 않으므로 적절한 시점에 free() 하여 메모리 누수가 생기는 것을 방지해야합니다. 함수 원형 #include void *malloc(size_t size); 매개변수 size 할당받고자 하는 메모리의 크기 (바이트 단위) 반환값 성공 시 할당 받은 메모리..
-
C/C++ atexit(3), on_exit(3)C,C++ & Linux 2020. 5. 22. 17:37
함수 기능 exit() 함수가 실행될 때 자동으로 실행될 함수들을 등록하는 함수입니다. 위 함수들로 등록된 함수들을 Stack 으로 쌓이며 늦게 등록된 함수일수록 먼저 호출됩니다. atexit() 함수의 경우에는 리턴 타입과 인자가 없는 함수만을 등록 할 수 있습니다. on_exit() 함수의 경우에는 리턴 타입은 없으나 인자를 가질 수 있는 함수를 등록할 수 있습니다. 위 함수들로 등록된 함수들은 정상적인 프로세스 종료시에 순차적으로 실행됩니다. 즉 시그널을 받고 종료되는 프로세스에 대해서는 등록된 함수들이 실행되지 않습니다. 위 함수들로 등록된 함수들은 exit() 함수를 호출해선 안됩니다. 무한 재귀 함수호출에 빠질 수 있습니다. 무한 재귀 함수호출에서 빠져나오기 위해서는 _exit() 함수를 호출..
-
C/C++ exit(3) _exit(2) _Exit(2)C,C++ & Linux 2020. 5. 22. 16:50
함수 기능 프로세스를 종료시켜주는 함수입니다. exit(3) 은 사용자 라이브러리 함수로 열려있는 파일(표준 입출력 파일 포함)들을 정리하고, 시그널 핸들러들을을 실행한 뒤 _exit(2) 를 호출합니다. 따라서 vfork() 한 자식 프로세스가 exit(3)을 호출하면 부모 프로세스가 표준 입출력을 사용하지 못하는 문제가 있습니다. _Exit(2)와 _exit(2) 는 시스템 함수로 파일 정리와 시그널 처리부들을 실행하지 않고 프로세스를 종료시킵니다. _exit(2)과 _Exit(2) 는 같은 일을 하는 함수입니다. 함수 원형 #include void exit(int status); void _Exit(int status); #include void _exit(int status); 매개변수 statu..
-
C/C++ tempnam(3)C,C++ & Linux 2020. 5. 22. 15:48
함수 기능 임시 파일을 만들어주는 함수입니다. tmpnam() 함수와 유사하지만 임시 파일의 생성 위치와 5글자 이내의 접두사를 지정할 수 있습니다. 함수 원형 char *tempnam(const char *directory, const char *prefix); 매개변수 directory 임시파일을 만들 디렉토리 경로입니다. NULL 이거나 존재하지 않는 디렉토리인 경우 시스템 환경 변수인 TMPDIR 또는 의 P_tmpdir 에 생성합니다. prefix 임시 파일의 접두사를 지정합니다. NULL인 경우 시스템이 정한 파일의 이름을 그대로 사용하게됩니다. 반환값 성공 시 임시 파일의 경로가 담긴 문자열 포인터 리턴 에러 시 NULL 리턴하고 errno 설정 예제 #include #include #inc..
-
C/C++ tmpnam(3), tmpfile(3)C,C++ & Linux 2020. 5. 22. 15:33
함수 기능 임시 파일을 만들어주는 함수입니다. tmpnam() 함수는 buf 가 NULL 일 경우에 내부 버퍼를 이용하여 파일명을 저장한 뒤 그 주소를 리턴합니다. NULL 이 아닌 경우에는 최대 길이 L_tmpnam 인 문자열을 buf 에 넣어줍니다. tmpnam() 함수로 생성된 임시 파일은 프로세스가 종료되어도 삭제되지 않으므로 개발자가 unlink() 또는 remove() 함수로 삭제해주어야 합니다. tmpfile() 함수로 만들어진 임시 파일들은 프로세스가 종료됨과 동시에 삭제됩니다. 함수 원형 #include char *tmpnam(char *buf); FILE *tmpfile(); 매개변수 buf 임시 파일의 파일명을 저장할 버퍼 NULL 일 경우 tmpnam 함수의 내부 버퍼를 사용합니다...
-
C/C++ fileno(3)C,C++ & Linux 2020. 5. 22. 15:08
함수 기능 파일 포인터에 맵핑되는 파일 디스크립터를 구해주는 함수입니다. 함수 원형 #include int fileno(FILE *fp); 매개변수 fp 파일 디스크립터를 얻고자 하는 파일 포인터 반환값 성공 시 지정한 파일 포인터에 맵핑되는 파일 디스크립터 리턴 에러 시 -1 리턴하고 errno 설정 리눅스시스템프로그래밍 저자 : 홍지만 https://book.naver.com/bookdb/book_detail.nhn?bid=14623672 책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)
-
C/C++ scanf(3), fscanf(3), sscanf(3)C,C++ & Linux 2020. 5. 22. 14:51
함수 기능 형식화된 문자열을 읽어들이는 함수입니다. scanf() 함수는 표준 입력 파일로부터 읽어들입니다. fscanf() 함수는 지정한 파일로부터 읽어들입니다. sscanf() 함수는 지정한 문자열로부터 읽어들입니다. 함수 원형 #include int scanf(const char *format, ...); int fscanf(FILE *fp, const char *format, ...); int sscanf(const char *buf, const char *format, ...); 매개변수 format 형식 지정자 %[*][필드 너비][길이수정자][변환형식] 변환형식 변환형식 설명 d 부호 있는 10진 정수 i 부호 있는 정수, 밑은 입력 형식에 따라 달라짐 o 부호 없는 8진수 u 부호 없는 1..
-
C/C++ sprintf(3), snprintf(3)C,C++ & Linux 2020. 5. 22. 14:16
함수 기능 문자열 배열에 형식에 맞춘 문자열을 출력해주는 함수입니다. printf 와 유사하지만 출력의 대상이 파일이 아니라 배열인 것이 포인트입니다. snprintf() 함수는 sprintf() 함수와 유사하지만 버퍼 크기를 고려하여 최대로 출력가능한 문자의 길이에 제한을 둡니다. 따라서 버퍼 오버플로우에 더 안전합니다. 함수 원형 #include int sprintf(char *buf, const char *format, ...); int snprintf(char *buf, size_t size, const char *format, ...); 매개변수 buf 출력한 문자열이 들어갈 배열 format 형식 지정자 ... 형식 지정자에 들어갈 변수들 리스트 size 출력할 수 있는 최대 글자 수 제한 일..