1. open, read, write, close
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
int close(int fd);
2. O_RDONLY, O_WRONLY, O_RDWR
열기옵션 |
설명 |
O_RDONLY |
읽기 전용으로 열기 |
O_WRONLY |
쓰기 전용으로 열기 |
O_RDWR |
읽기와 쓰기 모두 가능 |
3. O_CREATE, O_EXCL, O_APPEND, S_IRUSR, S_IWUSR, S_IXUSR
기타옵션 |
설명 |
O_CREATE |
해당 파일이 없으면 생성 O_CREAT로 파일을 생성하게 된다면 파일의 접근권한을 지정하기 위해 접근 권한 값을 추가해야 한다. ex) open( "Helloworld", O_WRONLY | OCREAT, 0644); 파일이 이미 있어도 열기가 가능하여 쓰기를 하면 이전 내용이 사라진다 |
O_EXCL |
파일이 이미 존재하면 open되지 않아 이전 파일을 보존할 수 있다. O_EXCL을 함께 사용하면, 파일이 없을 경우에는 O_CREAT 영향을 받아 쓰기 전용의 파일이 생성하고, 파일이 이미 존재하면 open()이 Failure된다. ex) fd = open( "./test.txt", O_WRONLY | O_CREAT | O_EXCL, 0644) |
O_APPEND |
파일을 추가하여 쓰기가 되도록 open 후에 쓰기 포인터가 파일의 끝에 위치하게 된다. |
S_IRUSR |
00400 으로 사용자 읽기 권한 |
S_IWUSR | 00200 으로 사용자 쓰기 권한 |
S_IXUSR |
00100 으로 사용자 실행 권한 |
4. 예시
#include <stdio.h> #include <fcntl.h> // O_WRONLY O_CREAT O_EXCL #include <unistd.h> // write close #include <string.h> // strlen int main(){ char *temp = "All My Fucking Fam"; int fd; if( 0< (fd=open( "base1.txt", O_WRONLY | O_CREAT | O_EXCL, 0644 )) ){ write(fd, temp, strlen(temp)); close(fd); } else { printf("File open Failure !\n"); } return 0; }
|
'Linux > base' 카테고리의 다른 글
| Ext4의 이해 (Part2) : Timestamp (0) | 2019.10.01 |
|---|