안녕하세요 꼬로미입니다
이번 포스팅에서는 리눅스를 기반 파일을 조작에 사용되는
파일열기, 파일 닫기, 파일에 저장된 데이터 쓰기와 읽기 4가지의 함수를 알아볼게요
리눅스에서는 소켓을 파일의 일종으로 구분합니다
* 파일 디스크립터 : 시스템으로부터 할당받은 파일 또는 소켓에 부여된 정수
파일열기(open)
데이터를 읽거나 쓰기위해 파일을 여는 함수입니다
두개의 인자 값의 첫번째 인자 값은 파일의 이름 및 경로 정보를 뜻하고
두번째 인자 값은 파일의 오픈 모드 정보를 전달해요
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *path, int flag); |
디스크립터를 반환하며 실패하면 -1을 반환합니다
두번째 인자 값인 파일의 오픈 모드 정보
오픈 모드 |
의미 |
O_CREAT |
필요하면 파일을 생성 |
O_TRUNC |
기존 데이터 모두 삭제 |
O_APPEND |
기존 데이터 보존, 뒤에 이어서 저장 |
O_RDONLY |
읽기 전용으로 파일 오픈 |
O_WRONLY |
쓰기 전용으로 파일 오픈 |
O_RDWR |
읽기, 쓰기 겸용으로 파일 오픈 |
파일 닫기(close)
파일 사용 후 닫기는 필수적이죠
#include <unistd.h> int close(int fd); |
닫고자 하는 파일 디스크립터를 전달합니다
파일에 데이터 쓰기(write)
#include <unistd.h> ssize_t write(int fd, const void * buf, size_t nbytes); |
성공 시 전달한 바이트 수, 실패시 -1
buf = 전송할 데이터가 저장된 버퍼의 주소 값을 전달
nbytes = 전송할 데이터의 바이트 수를 전달
파일에 저장된 데이터 읽기(read)
#include <unistd.h> ssize_t read(int fd, void *buf, size_t nbytes); |
성공시 수신한 바이트 수( 파일의 끝을 만나면 0), 실패시 -1
파일 디스크립터와 소켓
fd1 = socket함수생성
fd2 = open함수생성
fd3 = socket함수생성
(소켓 2개, 파일 1개 생성)
파일 디스크립터 값 확인
fd1의 파일 디스크립터 값 = 3
fd2의 파일 디스크립터 값 = 4
fd3의 파일 디스크립터 값 = 5
(0,1,2값은 이미 할당되어 있기에 3부터 생성이 되는 것을 알 수 있습니다)
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
open, close, read, write 함수들은
TCP/IP 프로그래밍의 기초가 되는 함수이니
꼭 기억해둬야겠어요
읽어주셔서 감사드립니다
'Study > Programming' 카테고리의 다른 글
안드로이드 프로그래밍 시작! 안드로이드 특징은? (0) | 2014.03.28 |
---|---|
윈도우 기반의 소켓관련 함수 (0) | 2014.03.25 |
윈도우기반으로 구현하기(헤더, 라이브러리 설정, 초기화) (0) | 2014.03.24 |
네트워크 프로그래밍 그리고 소켓생성과정, 함수! (0) | 2014.03.22 |
TCP/IP 소켓 프로그래밍! (0) | 2014.03.21 |