2016년 5월 6일 금요일

리눅스의 파일처리 - open()

리눅스에서는 디렉터리뿐만 아니라 하드웨어적인 모든 장치들을 파일로 취급한다.
( 일반 파일뿐만아니라, 외부장치도 파일로 취급함. )

그래서 어떤 특정한 장치(H/W)에 접근하기 위해서 파일디스크립터(FD)를 사용하면된다.

파일디스크립터(FD)는 특정한 파일에 접근하기위해 추상화시켜놓은 장치이다. 
간다히 말해서 '장치에 접근하기위한 핸들러 같은 역할을 하는구나' 생각하면된다.
이러한 핸들러, 파일디스크립터를 사용하는 방법은 먼저 파일을 연 상태에서 데이터의 추가, 삭제 등 원하는 작업을 하며, 필요한 역할을 끝냈으면 연 파일을 닫아주는 작업또한 필요하다. 이러한 작업을 다음과같은 함수를 이용하면된다.

1. Open()
핸들러 역할을하는 파일디스크립터의 의미를 부여할 수 있는 open()이다.
ex) open("파일명", 옵션);
: 파일명 : 원하는 파일을 입력
: 옵션    : 파일을 읽기, 수정, 생성 등 어떠한 작업을 할것인지 옵션부여

필요한 작업에서 다양한 옵션을 선택하는데, 그 중에서 대표적으로 사용하는 4가지 옵션
- O_RDONLY  :  읽기전용으로 파일열기
- O_RDWR     :  읽기/쓰기 전용으로 파일열기
- O_CREAT     :  파일의 생성
- O_APPND    :  파일에 추가

리눅스의 파이프명령( | )으로 이옵션들을 함께 사용할수있다.
ex) 파일을 읽기/쓰기 전용으로 열기, 파일이 존재하지않으면 생성.
     fd = open("test.txt", O_RDWR | O_CREAT)   
     // fd는 핸들러 역할을 하며, test.txt의 파일 크기가 저장됨.
그리고 필요한 작업을 마쳤다면, 파일을 연상태이니 close()함수를 통해서 닫으면된다.
ex) close(fd);

ex) Open함수 사용




댓글 없음:

댓글 쓰기

[Java] N-I/O(Non-Blocking) 파일 읽기 쓰기 - GatheringByteChannel, ScatteringByteChannel, ByteBuffer 사용.

우리는 지금까지 다음과 같이 살펴보았다. 1.  InputStream / OutputStream : 입, 출력 스트림을 바이트로 처리하여 읽기, 쓰기. 2.  FileInputStream / FileOutputStream : 입, 출력 스트림을 ...