■ 파일에 접근하는 가장 기본적인 수단은 read()와 write() 시스템 호출이다.
   하지만 파일에 접근하기에 앞서 open()이나 creat() 시스템 호출로 파일을 열어 놓아야 한다.
   파일 사용이 끝나면 close() 시스템 호출로 파일을 닫아야 한다.

(1) open() - 파일 오픈
: open() 시스템 호출로 파일을 열어 파일 디스크립터를 얻는다.

○ 함수원형
  int open(const char *path, int flags);
  int open(const char *path, int flags, mode_t mode);


○ 리턴값
성공 시 : 파일 디스크립터, 실패 시 : -1

- path : 파일의 경로를 포함한 이름을 나타내는 문자열의 포인터
- flags : 파일 오픈 모드
- mode : 생성 파일의 권한 설정

○ flags
flags에 인자로 넘겨줄 수 있는 값과 그 의미는 다음과 같으며 하나 이상의 모드를 OR연산으로 묶어서 전달 가능하다.

- O_CREAT : 필요한 경우 파일을 생성한다.
- O_TRUNC : 존재하던 데이터를 모두 삭제한다.
- O_APPEND : 존재하던 데이터를 보존하고 뒤에 이어서 저장한다.
- O_RDONLY : 읽기 전용 모드로 파일을 연다.
- O_WRONLY : 쓰기 전용 모드로 파일을 연다.
- O_RDWR : 읽기,쓰기 겸용 모드로 파일을 연다.


(2) creat()
: O_WRONLY | O_CREAT | O_TRUNC 의 일반적인 조합을 지원하기 위한 다음과 같은 시스템 호출이 존재한다.

○ 함수원형
  int
creat (const char *name, mode_t mode);


○ 리턴값
성공 시 : 파일 디스크립터, 실패 시 : -1

ex) creat(file, 0644);
    
 == open(file, O_WRONLY | O_CREAT | O_TRUNC, 0644);

0644 : 소유자는 읽기/쓰기가 가능하며, 나머지 모든 사람은 읽기만 가능.

'P rogramming > Linux System' 카테고리의 다른 글

파일 읽기 - read()  (0) 2012.03.06
파일 쓰기 - write()  (0) 2012.03.06
파일 오픈 - open() / creat()  (0) 2012.03.06
좀비프로세스의 원인과 종료  (0) 2012.03.02
네트워크 주소 변환 - inet_ntoa()  (2) 2012.02.29
네트워크 주소 변환 - inet_aton()  (0) 2012.02.29
by Latte 하늘이도우사 2012. 3. 6. 17:29