리눅스 read/write - 리눅스 시스템 프로그래밍 read와 write는 오픈된 파일로부터 데이터를 읽어오거나 저장하는 기능을 가진다. read는 파일 기술자 file descriptor로 지정한 파일(오픈한 파일)로부터 데이터를 읽어 들인다. read를 사용하기 위해서는 파일이 읽기 전용(O_RDONLY)이거나 읽기/쓰기(O_RDWR)이여야 한다. #include <unistd.h> ssize_t read(int filedescriptor, void *buf, size_t count); > filedescriptor : 읽기 작업을 수행할 파일에 대한 파일 기술자 이다. > buf : 버퍼는 파일로부터 읽어 들인 내용을 저장하기 위한 공간이다. 배열을 사용하며, 데이터 형식은 상관없다. 대부분은 char*를 사용 > count : 읽어 들일 파일의 내용의 크기를 지정합니다. 일반적으로 바이트 단위로 기술합니다. > return 값 : 읽기 작업이 성공할 경우, 읽어 들인 파일의 내용의 바이트 크기가 반환되며, 1 이상의 값 파일의 내용을 계속 읽다가 EOF(파일의 끝) 도달하면 0을 반환한다. write는 파일 기술자 file descripotr로 지정한 파일(오픈한 파일)에 데이터를 쓴다. ssize_t write(int filedescriptor, void *buf, size_t count); > filedescriptor : 읽기 작업을 수행할 파일에 대한 파일 기술자 이다. > buf : 버퍼는 파일로부터 쓰려는 내용을 저장하기 위한 공간이다. 배열을 사용하며, 데이터 형식은 상관없다. 대부분은 char*를 사용 > count : 버퍼에 있는 데이터 중에 실제로 파일로 저장할 데이터의 크기이다. > return 값 : 파일로 쓰기가 성공한 데이터의 크기이다. 대부분의 경우 count에서 지정한 값과 동일한 값이 반환됩니다. 다를 경우 쓰기 작업이 실패한 것입니다. #include <unistd.h> #include <fcntl.h> #include <unistd.h> #include <sys/types.h> #include <stdio.h> int main() { int fdin, fdout; ssize_t nread; char buf[1024] = {0}; fdin = open("read.txt", O_RDONLY); fdout = open("write.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644); while((nread = read(fdin, buf, 1024)) > 0) { if(write(fdout, buf, nread) < nread) { //write failed close(fdin); close(fdout); } } // write success puts("write success"); close(fdin); close(fdout); }
'Linux' 카테고리의 다른 글
리눅스 unlink, remove - 리눅스 시스템 프로그래밍 (0) | 2016.02.29 |
---|---|
리눅스 lseek - 리눅스 시스템 프로그래밍 (0) | 2016.02.29 |
리눅스 creat - 리눅스 시스템 프로그래밍 (0) | 2016.02.29 |
리눅스 close - 리눅스 시스템 프로그래밍 (1) | 2016.02.25 |
리눅스 open - 리눅스 시스템 프로그래밍 (0) | 2016.02.25 |