컴퓨터 공부/Advanced UNIX System Programming

[4월 27일 3교시] 파일 관련 시스템 콜

려리군 2009. 4. 27. 11:23

open : 파일열기


#include<fcntl.h>

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

기능 : 존재하는 파일을 열거나 새로운 파일을 만드는 함수.

리턴 : 성공시 fd값, 실패시 -1

pathname : 열고자 하는 파일의 이름

oflag : 플래그

 - 단일 지정 : 읽기, 쓰기, 읽기/쓰기

 - 중복 지정 

O_APPEND(쓰기는 파일 끝 추가), 

O_CREAT(없으면 파일 생성) with O_TRUC(무조건 파일 생성), O_EXCL(파일이 있으면 error)

O_NONBLOCK

O_SYNC : 쓰기 연산마다 DISK I/O가 발생하도록 한다.

mode : 접근권한 계산을 위해 사용(umask와 연산)


creat : 파일생성

O_WRONLY|O_CREAT|O_TRUNC 와 같음.


close : 파일 닫기

int close(int filedes);

기능 : 열러진 파일을 닫음.

리턴 : 성공시 0, 실패시 -1

filedes : 닫고자 하는 파일 디스크립터


lseek 

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

기능 : 파일의 현재 offset을 임의의 위치로 조정

리턴 : 성공시 이동한 지점 offset, 실패시 -1
offset : 바이트 단위 정수값

whence : offset을 옮기기 위한 기준점.

SEEK_SET(시작), SEEK_CUR(현재), SEEK_END(끝) 위치


read

ssize_t read(int filedes, void *buf, size_t nbytes);

기능 : 파일로부터 데이터를 읽어 들임. (offset증가)

리턴 : 성공시 버퍼로 읽어들인 데이터 바이트 수, 파일의 끝일 때 0, 실패시 -1

buff : 버퍼 공간

nbytes : 읽을 데이터의 최대 바이트 수


예시)

똑같은 파일 2개 open함수 사용시





write

ssize_t write(int filedes, const void *buf, size_t nbytes);

기능 : 파일로부터 데이터를 씀. (offset증가)

리턴 : 성공시 버퍼로 읽어들인 데이터 바이트 수, 실패시 -1

buff : 버퍼 공간

nbytes : 읽을 데이터의 최대 바이트 수