1. 파일과 파일디스크립터 (linux) 1-1. 파일이란파일은 데이터의 집합으로, 디스크와 같은 저장 매체에서 정보를 저장하는 기본단위다.리눅스에서는 기본적으로 모든 것을 파일로 취급하는 일관된 구조를 가지고 있다.일반 파일텍스트 파일, 바이너리 파일 등 사용자 데이터가 저장된 파일디렉토리파일과 다른 디렉토리를 포함하는 파일로, 파일 시스템의 구조를 형성장치 파일하드웨어 장치와의 인터페이스를 제공하는 파일로, /dev 디렉토리에 위치FIFO프로세스 간 통신을 위한 특별한 파일소켓네트워크 통신을 위한 파일로, 프로세스 간의 데이터 전송을 가능하게 함 1-2. 파일 디스크립터 (file descriptor)파일 디스크립터는 리눅스 및 UNIX 계열 운영 체제에서 프로세스가 파일이나 다른 I..
1회독 : 2024.11.20 ~ Ch1) 네트워크 프로그래밍의 시작1장 : 네트워크 프로그래밍과 소켓의 이해 2장 : 소켓의 타입과 프로토콜의 설정 3장 : 주소체계와 데이터 정렬 4장 : TCP 기반 서버/클라이언트 1 5장 : TCP 기반 서버/클라이언트 2 6장 : UDP 기반 서버/클라이언트 7장 : 소켓의 우아한 연결종료 8장 : 도메인 이름과 인터넷 주소 9장 : 소켓의 다양한 옵션 10장 : 멀티프로세스 기반의 서버구현 11장 : 프로세스간 통신 12장 : IO 멀티플렉싱 13장 : 다양한 입출력 함수들 14장 : 멀티캐스트 & 브로드캐스트 Ch2) 리눅스 기반 프로그래밍15장 : 소켓과 표준 입출력 16장 : 입출력 스트림의 분리에 대한 나머지 이야기 17장 : select보다 나은 ..
1. 문자의 기본 입출력 1-1. 아스키코드 컴퓨터는 문자를 저장할 때 문자 그 자체의 모양을 저장하지 않는다. 사실 문자라는 건 없다고 생각하는 것이 좋다. 문자는 약속된 정수다. 각 문자마다 고유의 번호를 붙이고 표로 만들어 둔 뒤, 해당 번호를 출력할 때, 자료형이 '문자'일 경우 미리 저장되어 있는 표를 보고 해당 문자를 그려준다. 그런데 개발자마다 다른 표를 사용한다면 서로의 코드가 호환되지 않을 것이다. 그래서 표준화된 약속이 필요한데, 이를 아스키코드라고 부른다. 초기에는 1byte중 7bit에만 문자정보를 담았다가 나중에 확장 아스키코드라고도 불리는 ansi 코드로 발전했다. ansi 코드는 1byte를 전부 사용한다. (8bit == 256개) 그러다가 코딩이 세계 각국으로 퍼지면서 표에..
1. 배열명의 역할 우리가 어떤 자료형을 선언하면 컴퓨터 메모리 공간상에 할당이 된다고 배웠다. 각 메모리 공간은 접근할 수 있는 주소가 각각 있고 그 크기는 환경에 따라 다르다. 이런 주소들은 숫자로 표현이 가능하지만 모든 연산을 할 수 있는 것은 아니고, 특정한 연산만 수행가능하다. 그 중에서 일반적인 정수, 문자, 실수 등의 자료는 주소를 알기 위해서는 &를 붙였어야 했는데, 배열은 그 이름 자체가 주소에 해당한다. 1-1. 배열명 활용 예를 들어서 int arr[5] 라는 배열이 있다고 해보자. 이 arr[5]를 선언한 순간 int 자료형(4 byte)* 5개 (요소의 갯수)로 20byte가 메모리 공간상에 연속적으로 할당된다. 우리는 배열을 인덱스로 접근할 수 있다. 뿐만 아니라 반복을 통해서 ..
1. 포인터 개요 메모리란 우리가 데이터를 넣고 꺼내는 공간이다. 그래서 컴퓨터가 값을 넣거나 사용하기 위해서는 그 메모리 주소를 알아야만 한다. C는 managed language라고 불리는 이 메모리를 직접 접근해서 관리할 수 있는 언어이다. 메모리에 직접 접근해서 값을 변경하거나 사용하도록 해주는 자료형을 포인터라고 부른다. 1-1. 메모리의 주소와 주소 연산자 포인터는 주소를 담고 있는 자료형이다. 포인터는 해당 주소를 참조하여 시작지점 부터 얼마나까지를 가리키는 변수의 값으로 인식할 지 결정한다. 그러면 해당 주소를 나타내는 연산자가 필요한데 이것이 바로 &연산자이다. (Ampersand, 앰퍼샌드) int a = 10; // 우리 컴퓨터 스택의 임의의 공간에 a라는 변수가 만들어지고 10이라는..
0. 배열을 쓰는 이유 앞에서 배웠듯이 변수를 선언하면 그 자료형의 크기만큼 메모리에 할당된다. 이 때 메모리의 할당은 연속적으로 할당되지 않고 제각각 할당된다. 만약 비슷한 자료에 점화식을 적용하거나 접근하고 싶을 경우 각각 변수를 선언했다면, 선언한 만큼 일일이 적용해줘야한다. 이런 경우 비슷한 자료를 연속적으로 모아서 관리하고 사용할 수 있다. 이렇게 연속적으로 비슷한 자료를 모은 것을 배열(array)라고 한다. 1. 배열 사용법 1-1. 배열 선언 및 초기화 추후 동적할당 챕터가 따로 있어서 malloc을 이용한 동적할당은 나중에 설명합니다. 배열의 선언에는 자료형, 배열의 이름, 배열의 요소 갯수가 필요하다. "자료형" "배열의 이름""[요소의 갯수]" 로 주로 표현된다. 요소의 개수를 정적으..