전체 글
-
C/C++ setrlimit(2) getrlimit(2)C,C++ & Linux 2020. 5. 23. 03:51
함수 기능 리소스 한계치를 알아내거나 바꾸는 함수입니다. 시스템마다 리소스의 한계치로 설정된 값들이 있습니다. 예를 들면 파일명 최대 길이, 프로세스 당 열 수 있는 최대 파일의 갯수 등이 있죠 getrlimit() 함수는 이 한계치를 알아낼 수 있는 함수이고, setrlimit() 함수는 바꿀 수 있는 함수입니다. 리소스 종류 구성요소 내용 RLIMIT_AS 한 프로세스의 총 자유 메모리 용량의 최댓값(바이트 단위) RLIMIT_CORE 한 코어 파일의 최대 크기 RLIMIT_CPU 프로세스가 소비할 수 있는 최대 CPU 시간(초 단위) RLIMIT_DATA Data 영역 전체의 최대 크기 RLIMIT_FSIZE 파일 생성 시 파일의 최대 크기 RLIMIT_LOCKS 프로세스가 가질 수 있는 파일 락의..
-
C/C++ setjmp(3) longjmp(3)C,C++ & Linux 2020. 5. 23. 00:29
함수 기능 함수의 경계를 넘나드는 분기처리를 하기 위해 사용되는 함수입니다. setjmp() 를 통해 마킹을 해두고, 나중에 longjmp() 를 호출하면 해당 마킹장소로 돌아오는 방식입니다. 함수 원형 #include int setjmp(jmp_buf env); void longjmp(jmp_buf env, int val); 매개변수 env 현재 상태에 대한 정보를 저장하는 객체입니다. setjmp() 가 실행되는 순간의 함스 스택 환경과 레지스터 환경을 env 변수에 저장합니다. 이후 longjmp() 함수가 호출되면 env 에 담긴 정보를 바탕으로 회귀하는 방식입니다. val longjmp() 함수에서 넘긴 val 값이 setjmp() 함수의 리턴값이 됩니다. 반환값 스스로 호출된 경우 0 리턴 l..
-
C/C++ setenv(3) unsetenv(3)C,C++ & Linux 2020. 5. 23. 00:11
함수 기능 환경변수 값을 추가하고 삭제할 수 있는 함수입니다. 함수 원형 #include int setenv(const char *name, const char *value, int rewrite); int unsetenv(const char *name); 매개변수 name 추가하거나 삭제하고 싶은 환경변수의 이름 value 지정한 name 의 환경변수 값(value) rewrite 이미 지정한 name의 환경변수가 존재할 때 rewrite가 0이면 변경하지 않고 그대로 둡니다. 1이면 새로운 값으로 변경합니다. 반환값 성공 시 0 리턴 에러 시 -1 리턴하고 errno 설정 리눅스시스템프로그래밍 저자 : 홍지만 https://book.naver.com/bookdb/book_detail.nhn?bid=1..
-
C/C++ putenv(3)C,C++ & Linux 2020. 5. 22. 22:28
함수 기능 환경 변수에 값을 추가하는 함수 프로세스가 종료되면 추가됐던 환경변수들은 자동으로 삭제됩니다. 함수 원형 #include int putenv(const char *str); 매개변수 str 환경변수에 추가할 문자열 환경변수는 "이름=값"의 형태로 이루어져야합니다. 반환값 성공 시 0 리턴 에러 시 0이 아닌 정수를 리턴하고 errno 설정 예제 #include #include #include #include extern char **environ; char glob_var[] = "HOBBY=swimming"; void ssu_addone() { char str[10]; // 지역변수를 환경변수에 추가 strcpy(str, "LOVER=js"); putenv(str); } int main(in..
-
C/C++ getenv(3)C,C++ & Linux 2020. 5. 22. 22:09
함수 기능 지정한 이름의 환경 변수를 얻는 함수입니다. 환경변수는 "이름=값"의 형태로 이루어져있습니다. 모든 환경변수의 리스트는 전역변수 envrion 과 main 함수의 세 번째 인자로도 얻을 수 있지만 특정 환경변수의 값만 알고 싶은 경우 이 함수를 사용할 수 있습니다. 함수 원형 #include char *getenv(const char *name); 매개변수 name 이름 변수로, 지정한 이름의 환경변수 값을 얻을 수 있습니다. 반환값 성공 시 지정한 이름의 환경변수를 가리키는 포인터 리턴 에러 시 NULL 리턴하고 errno 설정 예제 #include #include #include int main(int argc, char *argv[], char *envpp[]) { char buf[BUF..
-
C/C++ realloc(3)C,C++ & Linux 2020. 5. 22. 19:02
함수 기능 힙 메모리를 할당하는 함수입니다. Linux / Unix는 가용한 힙 메모리를 자유 공간 블럭(free memory block)의 리스트로 관리합니다. 이를 자유 공간 풀(free memory pool)이라고도 부르는데 malloc() 계열의 함수를 호출하게되면 이 리스트를 정해진 알고리즘으로 탐색하여 적절한 크기를 가진 메모리를 찾고 해당 메모리의 주소를 리턴하는 것입니다. 힙 메모리에 할당 받은 메모리는 함수가 끝나더라도 할당 해제 되지 않으므로 적절한 시점에 free() 하여 메모리 누수가 생기는 것을 방지해야합니다. 함수 원형 #include void *realloc(void *ptr, size_t newsize); 매개변수 ptr 재할당 하고자 하는 메모리의 포인터 newsize 새롭..
-
C/C++ calloc(3)C,C++ & Linux 2020. 5. 22. 18:56
함수 기능 힙 메모리를 할당하는 함수입니다. Linux / Unix는 가용한 힙 메모리를 자유 공간 블럭(free memory block)의 리스트로 관리합니다. 이를 자유 공간 풀(free memory pool)이라고도 부르는데 malloc() 계열의 함수를 호출하게되면 이 리스트를 정해진 알고리즘으로 탐색하여 적절한 크기를 가진 메모리를 찾고 해당 메모리의 주소를 리턴하는 것입니다. 힙 메모리에 할당 받은 메모리는 함수가 끝나더라도 할당 해제 되지 않으므로 적절한 시점에 free() 하여 메모리 누수가 생기는 것을 방지해야합니다. malloc 과는 달리 할당 받은 메모리를 0으로 초기화 시켜줍니다. 함수 원형 #include void *calloc(size_t nobj, size_t size); 매개..