Linux

open 함수

정든친구 2019. 8. 20. 14:42

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

 

int open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode);

 

에러 발생시 -1을 리턴.

에러 발생시 errno를 통해 알 수 있다.

*** flags 

O_RDONLY 읽기 전용
O_WRONLY 쓰기 전용
O_RDWR 읽기 쓰기

*** flags 부가 옵션

O_CREAT pathname에 해당하는 파일이 없는 경우 파일을 생성. 파일 생성의 경우 세번째 인자(mode) 인자를 참조하여 파일의 권한을 설정한다.
O_EXCL O_CREAT와 함께 사용. 만일 파일이 존재하면 에러가 발생되며 파일을 열지 않음
O_TRUNC pathname의 파일이 존재하며 쓰기모드(O_RWONLY나 O_RDWR)인 경우 파일의 내용을 모두 지운 상태로 연다. 단, FIFO나 장치 파일의 경우 이 옵션은 무시 됨.
O_APPEND 기존 파일의 내용에 닷붙여 쓰기를 한다
O_SYNC POSIX 표준이 아니므로 지원하지 않을 수 있음.
파일에 데이터를 쓸 때 물리적인 디스크에도 동일하게 적용

*** mode

S_IRWXU 파일 소유주에게 읽기, 쓰기, 실행 권한 설정
S_IRUSR 파일 소유주에게 읽기 권한 설정
S_IWUSR 파일 소유주에게 쓰기 권한 설정
S_IXUSR 파일 소유주에게 실행 권한 설정
S_IRWXG 파일 그룹에게 읽기, 쓰기, 실행 권한 설정
S_IRGRP 파일 그룹에게 읽기 권한 설정
S_IWGRP 파일 그룹에게 쓰기 권한 설정
S_IXGRP 파일 그룹에게 실행 권한 설정
S_IRWXO 다른 사용자에게 읽기, 쓰기, 실행 권한 설정
S_ROTH 다른 사용자에게 읽기 권한 설정
S_WOTH 다른 사용자에게 쓰기 권한 설정
S_XOTH 다른 사용자에게 실행 권한 설정