728x90
리눅스 파일 종류
- | rwxrw-rw- | 1 | owner | own group | file size | create date | file name |
파일 종류 | 권한 | 하드링크 수 | 소유자 | 소유그룹 | 파일 크기 | 생성 및 수정 일 | 파일 이름 |
함수 | 설명 |
open(2) | 파일 존재하면 열기 파일 존재하지 않으면 생성해서 열기 |
creat(2) | 파일 존재하면 기존 파일 삭제 후 열기 파일 존재하지 않으면 생성해서 열기 |
close(2) | 파일 닫기 |
read(2) | 열려 있는 파일로부터 데이터 읽기 |
write(2) | 열려 있는 파일로부터 데이터 저장 |
lseek(2) | 읽기/쓰기 포인터를 특정 위치로 이동 |
open(2)
int open(const char* path, int flags, /*, mode_t mode */);
- 1번 파라미터 : 열고자 하는 파일 경로
- 2번 파라미터 : 파일 열때 옵션
flag | explain |
O_RDONLY | 읽기 전용 |
O_WRONLY | 쓰기 전용 |
O_RDWR | 읽기/쓰기 전용 |
O_CREAT | 파일이 존재하지 않으면 생성 |
O_EXCL | 파일이 있는 경우 에러 발생 |
O_APPEND | 쓰기 작업시 파일 끝에 새로운 내용 추가 |
O_TRUNC | 기존 내용 삭제 후 쓰기 |
creat(2)
int creat(const char* path, mode_t mode);
- 1번 파라미터 : 새로운 파일 생성 경로
- 2번 파라미터 : 접근 권한
close(2)
int close(int fd);
- 1번 파라미터 : 닫고자 하는 파일의 디스크립터
read(2)
ssize_t read(int fd, void *buf, size_t count);
- 1번 파라미터 : 읽고자 하는 파일 디스크립터
- 2번 파라미터 : 읽어 들인 데이터를 저장할 버퍼
- 3번 파라미터 : 읽어 들일 데이터의 크기 (byte 단위)
write(2)
ssize_t write(int fd, const void* buf, size_t count);
- 1번 파라미터 : 저장할 파일 디스크립터
- 2번 파라미터 : 쓸 데이터를 저장되어 있는 버퍼
- 3번 파라미터 : 쓸 데이터의 크기 (byte 단위)
※ offset : 특정 위치를 기준으로 상대적인 위치 (읽기/쓰기 포인터)
lseek(2)
off_t lseek(int fd, off_t offset, int whence);
- 1번 파라미터 : 열려 있는 파일 디스크립터
- 2번 파라미터 : offset (기준점 : 어디서부터 읽을건지../쓸건지.. )
- 3번 파라미터 : 기준점
기준점 | explain |
SEEK_SET | 파일의 첫 부분 |
SEEK_CUR | 현재 읽/쓰기 포인터 위치 |
SEEK_END | 파일의 끝(EOF) |
파일 입출력
fopen(3)
FILE *fopen(const char *path, const char *mode);
- 1번 파라미터 : 열고 싶은 파일 경로
- 2번 파라미터 : 파일 열 때 접근권한
mode | read | wrtie | create | open() 함수 비교 |
"r" | O | X | X | O_RDONLY |
"r+" | O | O | X | O_RDWR |
"w" | X | O | O | O_WRONLY | O_CREAT | O_TRUNC |
"w+" | O | O | O | O_RDWR | O_CREAT | O_TRUNC |
"a" | X | O | O | O_WRONLY | O_CREAT | O_APPEND |
"a+" | O | O | O | O_RDWR | O_CREAT | O_APPEND |
fclose(3)
int fclose(FILE *stream);
- 1번 파라미터 : 닫고자 하는 FILE의 pointer
fread(3)
size_t fread(void *buf, size_t size, size_t nmemb, FILE *stream);
- 1번 파라미터 : 읽은 데이터 저장할 버퍼
- 2번 파라미터 : 1번에 읽을 데이터 크기
- 3번 파라미터 : 몇 번에 걸쳐 데이터 읽을 건지...
- 4번 파라미터 : File Pointer
perror 함수
void perror(const char *str)
- 표준에러로 사용자 정의 오류 메시지(str)와 시스템 오류 메시지 출력
fwrite(3)
size_t fwrite(const void *buf, size_t size, size_t nmemb, FILE *stream);
- 1번 파라미터 : 쓸 데이터가 저장된 버퍼
- 2번 파라미터 : 1번에 쓸 데이터 크기
- 3번 파라미터 : 몇 번에 걸쳐 데이터 쓸건지...
- 4번 파라미터 : File Pointer
strlen 함수
size_t strlen(const char *str);
- 지정된 문자열(str) 길이 반환
fseek(3) : 읽/쓰기 포인터 위치 이동
int fseek(FILE *stream, long int offset, int whence);
- 1번 파라미터 : File Pointer
- 2번 파라미터 : offset
- 3번 파라미터 : 기준점 (SEEK_SET, SEEK_CUR, SEEK_END)
rewind 함수 : 읽/쓰기 포인터(offset) 위치를 파일 처음으로 이동
void rewind(FILE *stream);
//fseek(fp, 0, SEEK_SET) 동일
ftell 함수 : 현재 읽/쓰기 포인터(offset) 반환
long int ftell(FILE *stream);
fflush(3) : 강제로 버퍼 내용 출력
int fflush(FILE* stream);
- 1번 파라미터 : File Pointer
- `fflush(NULL);` : 열려있는 모든 스트림의 버퍼 내용 출력
반응형
'CS > Linux' 카테고리의 다른 글
Process & Signal (0) | 2023.08.29 |
---|---|
디렉토리 관리 관련 함수 (0) | 2023.08.29 |
파일 관리 관련 함수 (0) | 2023.08.29 |
텍스트 에디터(vi) (0) | 2023.08.28 |
리눅스 구조 & 명령어 (0) | 2023.08.27 |