Computer Security

#2 파일 열기/닫기 본문

리눅스 시스템 프로그래밍

#2 파일 열기/닫기

쿠리 Kuri 2022. 9. 7. 18:30
반응형

파일 열기

 

FILE *fopen(const char *pathname, const char *mode);

 

파라미터

- pathname : 파일 경로

- mode : 파일 열기 모드(파일을 어떤 방식으로 열건지)

 

반환 값

- 성공 시 :열린 파일 포인터(stream)

- 실패 시 :NULL 포인터 반환

 

 

 

 


파일 열기 모드

파일 열기 모드

 

모드 별로 읽기 권한과 쓰기 권한을 따로 허용을 요청하게 되어있다.

읽기나 쓰기만 필요한 경우도 있고 읽기와 쓰기 모두 필요한 경우도 있기에 자신이 필요한 모드를 결정할 수 있다. 

 

파일 포지션은 파일을 열 때, 파일 포인터의 위치를 어느 위치에 놓을 것인지를 결정하는 것이다.

파일의 시작에 놓을 수도 있고 끝에 놓을 수도 있다.

 

또, 파일의 존재 여부에 따라 r 모드의 경우에는 존재된 파일이 없으면 열기에 실패하지만, w와 a는 새로운 파일을 생성하게 할 수 있다.

w는 기존 파일이 존재할 경우 기존 파일을 제거 후 새 파일을 생성한다.

 

r은 read, w는 write, a는 append의 약자이다.

r는 읽기만을 요청하고 w는 쓰기만을 요청하는 모드이다. a는 기존 파일에 내용을 덧붙일 수 있다. 

 

w+, r+, a+는 읽기와 쓰기 모두 가능하다. 서로 다른 점은 위의 표를 보면 확인할 수 있다.

 

 

 

 


파일 닫기

 

 

int fclose(FILE *stream) ;

 

 

파라미터

- stream : 열린 파일 포인터

 

반환 값

- 성공시 0

- 실패시 EOF

 

 

 


파일 오픈 후 파일에 내용을 저장하는 함수

 

fputs(const cahr *s, FILE *stream);

 

 

 

 


파일 내용을 읽어오는 함수

 

fgets(char *s, int size, FILE *stream);

 

 

파라미터

- char *s : 파일 내용을 읽어올 버퍼

- int size : 이 버퍼의 사이즈

- FILE *stream : 어떤 파일에서 읽어 올 것인지를 나타낸 파일포인터

 

 

 

 


실습1 

 

 

1. file_open.c 라는 예제 코드를 작성해보자.

file_open

위의 코드는 파일 오픈 예제 코드이다.

 

 

 


2. gcc 명령어를 이용해 컴파일 해준다.

gcc

 

 

 


3. ./file_open 명령어를 이용해 실행 시켜준다.

./file_open

위와 같이 ./file_open 같은경우는 실행했을 경우, 아무런 반응이 없어 보이지만, data 파일이 생긴걸 알 수 있다.

 

 

 


4. cat 명령어를 이용해 data 파일을 읽어준다.

cat data

 

 

 

 


실습 2

 

써놓은 파일에 읽는 함수를 작성 해보자.

 

1. read_from_file 함수를 추가 해주자.

file_open

위와 같이 read_from_file 함수를 만들어 주자.

아까는 w 를 사용했지만, 여기선 r을 쓴 것을 알 수 있다.

 

 

 


2.  gcc 명령어를 이용해 컴파일 해주자.

gcc

 

 

 

 


3.  ./file 명령어를 통해 실행 시켜주자.

./file

이번엔 data 파일을 읽지 않아도, 바로 보이는 것을 알 수 있다.

 

반응형
Comments