반응형
/*
* made by so_sal
* http://sosal.tistory.com/
*/
정수값 |
이름 |
0 |
표준 입력( stdin ) /dev/stdin |
1 |
표준 출력( stdout ) /dev/stdout |
2 |
표준 오류( stderr ) |
#include <unistd.h>
size_t read( int fildes, void *buf, size_t nbytes );
첫번째 인자 :: fildes :: 파일 서술자
두번째 인자 :: *buf :: 읽어와서 저장할 버퍼.
새번째 인자 :: nbytes :: 읽을 수 있는 최대 byte의 수
read는 총 읽어와서 buf에 저장한 byte의 수를 리턴합니다.
#include <unistd.h>
#include <stdlib.h>
int main(){
char buffer[128];
int nread;
nread = read( 0, buffer, 128 );
if( nread == -1 )
write( 2, "A read error has occurred\n", 26 );
if( (write( 1, buffer, nread ) ) != nread ) //1번 (표준출력)으로 write == printf 와 동일한 역할
write( 2, "A write error has occurred\n", 27 );
exit(0);
}
128 바이트를 저장할 수 있는 캐릭터 배열 buffer를 선언.
read함수를 0번 서술자를 이용하여 nread에 사용 하였습니다.
read함수를 0번 서술자(표준입력)에 대해서 읽어옵니다.
(만일 파일을 가리키는 서술자였다면, 그 파일에 적혀있는 내용을 buffer에 읽어옵니다.)
표준 입력인 서술자에 대해서 read함수로 읽어오는 경우는
사용자가 입력하는 문자 열에 대해 받아드리게 됩니다.
따라서 이 예제는 사용자가 입력한 값을 buffer에 저장하게 되고, (실패시 에러 )
read는 읽어온 byte수를 nread변수에 리턴 합니다.
2번째 if절에서는 read로부터 읽어와 저장되어진 buffer를 출력하게 됩니다.
위 그림에 첫 I'm sosal!!은 본인이 직접 입력한 문자열입니다.
#include<stdlib.h>, exit(0)에 대한 글은 아래 02.write 글 맨 아래를 참조하세요.
FILE 게시물들은
begining Linux programing.
Linux 언쉬리드' 를 참고하였습니다.
'Linux > Linux_programing' 카테고리의 다른 글
Socket - 02. Server socket (0) | 2009.10.03 |
---|---|
리눅스 Socket - socket(), sockaddr (0) | 2009.09.28 |
리눅스 FILE - open(), close() 시스템콜 (1) | 2009.09.28 |
리눅스 FILE - Write() 시스템콜 (1) | 2009.09.27 |
리눅스 FILE - System call. (0) | 2009.09.27 |