Computer Security

#6 저수준 파일 열기/닫기, 스트림 포지션 본문

리눅스 시스템 프로그래밍

#6 저수준 파일 열기/닫기, 스트림 포지션

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

파일 열기

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

파라미터

 

- pathname : 파일 경로

- flags : 접근 모드를 포함한 여러 가지 플래그

- mode : 파일 생성 시 설정할 권한

 

 

 

반환 값

 

- 성공 시 열린 파일 디스크립터(fd)

- 실패 시 -1

 

 

 


fopen과 open 의 차이?

 

open() 함수와 fopen() 함수의 차이는 라이브러리에 있다.

open() 함수는 POSIX.1 규정에 준수하는 시스템 함수로, open() 함수는 커널수준에서 동작한다.(저수준 레벨)

fopen() 함수는 ANSI-C 규정에 준수하는 라이브러리 함수로, 컴파일러에 의해 표준 라이브러리를 사용하여 동작하므로 어플리케이션 수준에서 동작한다.

 

 

 

 


파일 열기 - 플래그

flag

 

 

 

 

 


파일 열기 - 권한

권한

 

파일생성시 권한설정

ex) S_IRWXU : S_I 는고정이고, Read Write eXecution 을 User에게  -> S_IRWXU 이런식으로 해석 할 수 있다.

 

 

숫자를 이용해서도 설정 할 수 있다! -> 622  --> 유저에겐 읽기,쓰기권한,   그룹에겐 쓰기권한, other에겐 쓰기권한을

Value값을 이용해서 편히 설정 할 수 있다.

 

 

 

 

 


파일 닫기

int close(int fd);

파라미터

 

- fd : 파일 디스크립터

 

 

 

반환 값

 

- 성공 시 0

- 실패 시 -1

 

 

 

 

 


파일 포지션 - offset 설정

off_t lseek(int fd, off_t offset, int whence);

파라미터

 

- fd : 파일 디스크립터

- offset : 오프셋 값(양수/음수 모두 가능)

- whence : 오프셋의 기준

    - SEEK_SET :  파일의 시작 기준

    - SEEK_END : 파일의 끝 기준

    - SEEK_CUR : 현재 파일 포지션의 기준

 

 

 

 

반환 값

 

- 성공시 완료 후 파일 포지션(offset값)

- 실패시 -1

 

 

 


파일 포지션 - 현재 offset 가져오기

 

 

저수준레벨 에서는 ftell() 과 같은 API가 없다.

 

 

하지만, 아래와 같이 현재 오프셋을 가져올 수 있다.

cur_offset = lseek(fd, 0, SEEK_CUR);
반응형
Comments