두근두근이야기

read() 함수 본문

IT/IT ::Linux

read() 함수

골든 2013. 3. 21. 20:47

데이터를 파일에서 읽어오는 함수이다. 열린파일에서 자료를 읽을 때 사용한다.

현재 파일 offset에서 nbytes만큼의 데이터를 읽어 들인다.

파일에서 데이터를 읽은 후 파일 offset은 마지막으로 읽어 들인 byte만큼 옮겨 가게 된다.


 #include<unistd.h>

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

반환값: 읽은 바이트의수, 파일의 끝인 경우는 0, 오류시 -1

-read 호출이 성공하면 실제로 읽은 바이트 수가 반환됨

-파일의 끝을 읽으려 한 경우에는 0이 반환됨(파일offset이 이미 파일의 끝에 있는 경우)

-실제로 읽은 바이트 수(반환값)가 호출시 요청한 바이트 수(nbytes 인수)보다 작은 경우

정규 파일을 읽을 때, 요청된 수만큼의 바이트들을 읽기 전에 파일의 끝에 도달

터미널 파일에서 자료를 읽을 때

네트워크에서 자료를 읽을 때

파이프나 FIFO에서 자료를 읽을 때

레코드 기반 장치에서 자료를 읽을 때

요청된 크기의 자료 중 일부만을 읽은 상황에서 시그널에 의해 연산이 가로채였을 때

의 경우가 있음

다시 위 함수를 보면 정의에서 볼 수 있듯이 파일디스크립터(filedes), buf, nbytes인자를 취한다. buf는 읽어들인 데이터를 저장할 버퍼의 포인터이다. nbytes는 읽어들일 바이트 수이다. nbytes만큼 데이터를 읽어 들이게 된다.


'IT > IT ::Linux' 카테고리의 다른 글

우분투 터미널에서 컴퓨터끄기  (0) 2013.04.02
현재 프로세스 보기 및 죽이기  (0) 2013.04.02
우분투에서 한영키!!!!  (0) 2013.03.17
[파일i/o] lseek 함수 예제  (0) 2013.03.13
[파일i/o] lseek 함수  (0) 2013.03.13