'저수준'에 해당되는 글 1건

  1. 2009.10.02 저수준 파일 입출력 함수

open(), read(), write(), close(), lseek(), ioctl() 등.

1. open() 함수
형식:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

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

용도 :
디바이스 파일을 읽거나 쓰기 위해 파일을 연다. 이때 flags에 지정한 속성으로 pathname에 지정한 이름의 파일을 연다.

매개변수:
pathname: 오픈할 디바이스 파일의 이름(경로 포함)
flags: 디바이스 파일에 접근하는 방식 (OR연산자로 여러 flag를 한꺼번에 지정할수도 있다.)
mode : 파일을 닫을 때 설정할 권한 설정

 flags 의미 
 O_RDONLY  읽기 전용
 O_WRONLY  쓰기 전용
 O_RDWR  읽기 및 쓰기
 O_CREAT  파일 생성(파일이 존재하면 작업 안함)
 O_TRUNC  파일 크기를 0으로 연다. O_CREAT와 함께 사용한다.
 O_NONBLOCK, O_NDELAY  비블록 모드 
 O_SYNC  쓰기의 동기화, 디바이스 파일에 쓰기를 하면 물리적인 하드웨어에 기록될 때까지 태스크는 블록됨.
 O_NOCTTY  터미널 디바이스 파일인 경우 직렬 디바이스로 속성 설정.
 O_BINARY, O_TEXT  문서를 바이너리로 열거나 텍스트 모드로.

반환 값: 성공 시 파일 디스크립터 값을 반환하고, 실패 시 -1을 반환한다.

2. close() 함수
형식:
#include <unistd.h>
int close(int fd);

용도: open()함수에서 반환한 파일 디스크립터 fd에 해당하는 디바이스 파일을 닫는다.

매개변수:
fd: 파일 디스크립터

반환 값: 성공 시 0을 반환하고, 실패 시 -1을 반환한다.

3. read() 함수
형식:
#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);

용도:
디바이스 파일로부터 데이터를 읽는다. 파일 디스크립터 fd를 가지는 디바이스 파일에서 buf로 시작하는 버퍼에 count 크기의 바이트를 읽는다. 만일 count가 0이라면 0을 반환한다. count값은 SSIZE_MAX보다 작아야 하며, 만일 count가 SSIZE_MAX보다 크다면 결과는 예측할 수 없다.

매개변수:
fd: 파일 디스크립터
buf: 읽은 데이터가 저장될 메모리 공간의 주소
count: 데이터 크기

반환 값:
성공 시 읽은 바이트 수를 반환하며, 실패 시 -1을 반환한다. 이때 성공하는 경우 파일 포인터의 위치는 읽은 크기만큼 이동한다.

4. write() 함수
형식:
#include <unistd.h>

ssize_t write(int fd, const void *buf, size_t count);

용도: 디바이스 파일에 데이터를 쓴다. buf가 가리키는 버퍼에서 파일 디스크립터 fd를 가지는 파일에 count 바이트 크기의 데이터를 쓴다. 이때 count값은 SSIZE_MAX보다 작아야 한다.

'Programming > General Topics' 카테고리의 다른 글

C의 메모리 관리 구조  (0) 2010.06.12
exec() family  (0) 2009.10.02
strerror()  (0) 2009.10.02
perror()  (0) 2009.10.02
Programming Problems 2.22  (0) 2009.10.02
저수준 파일 입출력 함수  (0) 2009.10.02
Posted by exahz

티스토리 툴바