728x90

리눅스 파일 조작

- 리눅스에서는 소켓 조작은 파일 조작과 동일하게 간주됨

- 운영체제가 제공하는 함수를 기반으로 하는 파일 입출력 함수를 통해 소켓을 데이터 송수신에 이용

- 파일 디스크립터를 이용하여 입출력 진행

    -> 파일 디스크립터 : 운영체제가 만든 파일(소켓)을 구분하기 위한 숫자

 

파일 함수

- 파일 열기 : 성공 시 파일 디스크립터, 실패 시 -1 반환

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char* path, int flag);

- 파일 닫기 : open 한 파일 디스크립터 전달. 성공 시 0 실패 시 -1 반환

#include <unistd.h>

int close(int fd);

- 데이터 쓰기 : 성공 시 전달한 바이트 수, 실패 시 -1 반환

#include <unistd.h>

ssize_t write(int fd, const void* buf, size_t nbytes);

- 데이터 읽기 : 성공 시 수신한 바이트 수, 실패 시 -1 반환

#include <unistd.h>

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

 

파일 함수를 이용한 소켓 생성

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/socket.h>

int main(void)
{	
	int fd1;
	fd1=socket(PF_INET, SOCK_STREAM, 0);
	
	printf("file descriptor 1: %d\n", fd1);
	
	close(fd1);
        
	return 0;
}
728x90

+ Recent posts