전체 글
-
C/C++ setbuf(3) setvbuf(3)C,C++ & Linux 2020. 5. 21. 10:14
함수 기능 파일의 버퍼를 바꿔주는 함수입니다. 버퍼 방식 버퍼 방식 매크로 설명 Full buffer _IOFBF 버퍼가 가득 차야 파일에 읽고 쓰는 방식으로 주로 일반 파일에 적용 Line buffer _IOLBF 버퍼에 개행 문자가 들어오면 파일에 읽고 쓰는 방식으로 표준 입출력 파일에 쓰임 None buffer _IONBF 버퍼를 사용하지 않고 바로바로 파일에 읽고 쓰는 방식으로 표준 에러 파일에 쓰임 setbuf() 의 경우 buf 인자에 NULL을 넣게 되면 None buffer를 의미하며 NULL이 아닌 값을 넣게 되면 해당 버퍼를 Full buffer 로 사용하게 됩니다. 단 fp 인자가 터미널인 경우 Line buffer 를 사용하게 됩니다. 이때 버퍼의 크기는 BUFSIZ 로 사용되며 이..
-
C/C++ fclose(3) fcloseall(3)C,C++ & Linux 2020. 5. 21. 09:23
함수 기능 파일을 닫아주는 함수입니다. fcloseall() : 표준 입출력, 에러 파일을 포함하여 프로세스가 열어둔 모든 파일을 닫습니다. 함수 원형 #include int fclose(FILE *fp); int fcloseall(); 매개변수 fp 닫고자 하는 파일의 파일 포인터 반환값 성공 시 0 리턴 에러 시 EOF 리턴하고 errno 설정 예제 #include #include int main(int argc, char *argv[]) { char *fname = "ssu_test.txt"; FILE *fp; if ((fp = fopen(fname, "r")) == NULL) { fprintf(stderr, "fopen error\n"); exit(1); } printf("파일 열기 성공\n");..
-
C/C++ fopen(3) freopen(3) fdopen(3)C,C++ & Linux 2020. 5. 21. 02:13
함수 기능 fopen 파일을 열어주는 함수입니다. 파일을 열게 되면 파일 스트림형 구조체 FILE* 을 리턴 받게 되는데 이는 자체적인 입출력 버퍼를 지닌다는 특징이 있습니다. 이 버퍼는 시스템 버퍼가 아닌 라이브러리 레벨의 버퍼입니다. freopen 파일을 닫고 다시 열어주는 함수입니다. 주로 stdin, stdout, stderr 을 바꾸기 위해 쓰거나 접근 모드를 변경하기 위해 사용합니다. fdopen 파일 디스크립터로 파일을 열어주는 함수입니다. open(), dup() 에서 쓰이는 파일 디스크립터와 연동되는 파일 스트림형 구조체를 얻기 위해 주로 사용합니다. 함수 원형 #include FILE *fopen(const char *filepath, const char *mode); FILE *fre..
-
C/C++ getcwd(2) get_current_dir_name(2)C,C++ & Linux 2020. 5. 21. 01:49
getcwd, get_current_dir_name 함수 기능 현재 작업 디렉토리의 경로를 알아내는 함수 함수 원형 #include char *getcwd(char *buf, size_t size); char *get_current_dir_name(); 매개변수 buf 현재 작업 디렉토리의 경로를 저장할 버퍼 size 버퍼의 최대 길이 반환값 성공 시 작업 디렉토리의 경로 리턴 에러 시 NULL 리턴하고 errno 설정 getcwd() 의 buf에 NULL 을 입력하게 되면 내부적으로 동적할당하여 그 주소를 리턴한다. getcwd(NULL, 0) 은 get_current_dir_name() 과 동일하게 동작한다. 예제 #include #include #include #define PATH_MAX 1024..
-
C/C++ chdir(2) fchdir(2)C,C++ & Linux 2020. 5. 21. 01:37
chdir 함수 기능 현재 프로세스의 작업 디렉토리를 변경하는 함수 함수 원형 #include int chdir(const char *filepath); int fchdir(int fd); 매개변수 filepath 새로운 작업 디렉토리 경로 fd 새로운 작업 디렉토리의 파일 디스크립터 반환값 성공 시 0 리턴 에러 시 -1 리턴하고 errno 설정 예제 #include #include #include int main(int argc, char *argv[]) { if (chdir("/etc") < 0) { fprintf(stderr, "chdir error\n"); exit(1); } printf("chdir to /etc 성공\n"); exit(0); } 결과 리눅스시스템프로그래밍 저자 : 홍지만 ht..
-
C/C++ telldir(3) seekdir(3)C,C++ & Linux 2020. 5. 20. 16:56
함수 기능 telldir() : 디렉토리 포인터의 현재 위치를 알려주는 함수 seekdir() : 디렉토리 포인터의 현재 위치를 수정하는 함수 함수 원형 #include long telldir(DIR *dp); void seekdir(DIR *dp, long loc); 매개변수 dp 대상 디렉토리의 DIR 포인터 loc 새로운 디렉토리 포인터의 위치 telldir(3) 반환값 성공 시 현재 디렉토리 포인터의 위치 리턴 에러 시 -1 리턴하고 errno 설정 리눅스시스템프로그래밍 저자 : 홍지만 https://book.naver.com/bookdb/book_detail.nhn?bid=14623672 책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)
-
C/C++ closedir(3)C,C++ & Linux 2020. 5. 20. 16:48
closedir(3) 함수 기능 디렉토리를 닫는 함수 함수 원형 #include #include int closedir(DIR *dp); 매개변수 dp 닫고자하는 디렉토리의 DIR 포인터 반환값 성공 시 0 리턴 에러 시 -1 리턴하고 errno 설정 예제 #include #include #include #include #include #include #include #ifdef PATH_MAX static int pathmax = PATH_MAX; #else static int pathmax = 0; #endif #define MAX_PATH_GUESSED 1024 #ifndef LINE_MAX #define LINE_MAX 2048 #endif char *pathname; char command[LI..
-
C/C++ rewinddir(3)C,C++ & Linux 2020. 5. 20. 16:15
rewinddir(3) 함수 기능 디렉토리 포인터를 다시 처음으로 돌려놓는 함수입니다. 보통 opendir() 이후에 readdir() 을 하다가 다시 처음부터 탐색하고 싶은 경우 사용합니다. 함수 원형 #include void rewinddir(DIR *dp); 매개변수 dp rewind 할 DIR 포인터 반환값 void 예제 #include #include #include #include #include #include #include #define DIRECTORY_SIZE MAXNAMLEN int main(int argc, char *argv[]) { struct dirent *dentry; struct stat statbuf; char filename[DIRECTORY_SIZE + 1]; DIR..