열린 파일기술자로 부터 데이타를 읽어들인다.
#include <unistd.h> ssize_t read(int fd, void *buf, size_t count);
socket(2) 혹은 open(2) 등으로 열린 파일에서 원하는 데이타를 읽어들인다. fd 가 socket, open 으로 열린 파일기술자이다. fd 에 읽을 데이타가 있다면 buf 에 담아서 가져온다. count 는 buf 에서 한번에 가져올 데이타의 크기를 나타낸다.
성공할경우 0이상의 값을 반환한다. 0이라면 파일의 끝을 의미하며, 0 보다 큰 양수라면 이는 읽어들인 buf 의 크기를 나타낸다. 파일 끝이 아닌상태에서 파일에서 데이타를 가져오는데 성공했다면, 파일 포인터의 위치는 읽은 데이타의 크기만큼 이동하게 된다.
에러가 발생할경우 -1 을 되돌려주며 errno 는 적당한 값으로 설정된다. 에러가 발생했을경우 파일:::포인터(:12)의 위치가 어떻게 바뀔지는 예측할수 없다.
다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.
데이타를 읽기전에 함수가 신호(signal)에 의해 인터럽트 되었다.
비봉쇄로 열린 파일지시자에 즉시 읽을 데이타가 없을 경우.
I/O 에러.
파일지시자 fd 가 디렉토리를 가르킬경우.
파일지시자 fd 가 유효한 파일기술자가 아니거나 읽기 위해 열려있지 않을경우
fd 가 읽기에 적당하지 않은 객체와 연결되어 있다.
#include <unistd.h> #include <stdio.h> #include <string.h> #define STDIN 1 int main() { char buf[80]; memset(buf, 0x00, 80); if (read(STDIN, buf, 80) < 0) { perror("read erro : "); exit(0); } printf("%s", buf); }
Copyrights © - Joinc, All Rights Reserved. Inherited From - Yundream Rebranded By - Joonphil
1장. read(2)
열린 파일기술자로 부터 데이타를 읽어들인다.
1.1절. 사용법
1.2절. 설명
socket(2) 혹은 open(2) 등으로 열린 파일에서 원하는 데이타를 읽어들인다. fd 가 socket, open 으로 열린 파일기술자이다. fd 에 읽을 데이타가 있다면 buf 에 담아서 가져온다. count 는 buf 에서 한번에 가져올 데이타의 크기를 나타낸다.
1.3절. 반환값
성공할경우 0이상의 값을 반환한다. 0이라면 파일의 끝을 의미하며, 0 보다 큰 양수라면 이는 읽어들인 buf 의 크기를 나타낸다. 파일 끝이 아닌상태에서 파일에서 데이타를 가져오는데 성공했다면, 파일 포인터의 위치는 읽은 데이타의 크기만큼 이동하게 된다.
에러가 발생할경우 -1 을 되돌려주며 errno 는 적당한 값으로 설정된다. 에러가 발생했을경우 파일:::포인터(:12)의 위치가 어떻게 바뀔지는 예측할수 없다.
1.4절. 에러
다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.
데이타를 읽기전에 함수가 신호(signal)에 의해 인터럽트 되었다.
비봉쇄로 열린 파일지시자에 즉시 읽을 데이타가 없을 경우.
I/O 에러.
파일지시자 fd 가 디렉토리를 가르킬경우.
파일지시자 fd 가 유효한 파일기술자가 아니거나 읽기 위해 열려있지 않을경우
fd 가 읽기에 적당하지 않은 객체와 연결되어 있다.
1.5절. 예제
Recent Posts
Archive Posts
Tags