참고 도서 |
2장. C 프로그램 구조 이해하기2부. 리눅스 C 라이브러리 함수
가장 기본적인 구조의 C 프로그램을 통해 기본 틀을 익힌 후, C 프로그램을 상수를 이용한 경우, 변수를 이용한 경우, 함수를 이용한 유형별로 살펴봄으로써 C 프로그램의 전반적인 구조를 이해한다.
3장. 연산자와 제어문
연산자란 무엇을 연산할 것인지를 나타내는 부분으로 C 언어에서는 산술, 관계, 대입, 논리, 비트, 시프트, 콤마, 조건, sizeof 등의 연산자가 있다. 프로그램의 실행은 위에서부터 아래로 순차적으로 이루어지고 이러한 실행 순서를 변경하는 것이 제어문으로 if 문, switch 문, while 문, for 문, do-while 문, break 문, continue 문이 있다.
4장. 배열과 포인터
가장 기본이 되는 데이터 구조인 배열의 개념과 종류를 알아본다. 그리고 포인터를 이용해 이런 데이터가 저장된 주소를 어떻게 다루는지를 통해 포인터와 배열의 관계를 살펴본다.
5장. 함수
C 프로그램은 특정 작업을 처리하는 단위인 함수가 모여 이루어진다. 5장에서는 함수를 선언, 정의, 호출하는 방법을 알아보고, 함수 간에 데이터를 주고 받는 방법, 기억 클래스, 재귀호출 등 함수와 관련된 다양한 주제에 대해 살펴본다.
6장. 구조체와 공용체
데이터형이 다른 변수를 하나로 묶어 놓은 모임인 구조체를 사용하는 방법을 알아보고, 중첩 구조체, 자기 참조 구조체에 대해 살펴본다. 그리고 구조체와 유사하지만 구조체와 달리 데이터 간에 기억장소를 공유해 자원 낭비를 줄일 수 있는 공용체에 대해 살펴본다.
7장. 전처리기3부. 리눅스 C 프로그래밍 관련 툴
프로그램을 실행하기 위해서는 컴파일로 소스 파일을 실행 파일로 변환해야 하고 컴파일 전에 임의의 수식이나 상수를 정의하거나 필요한 외부 파일을 삽입해야 하는 데, 이러한 일을 하는 것이 전처리기다.
8장. 문자와 문자열 처리 함수
문자 판별 함수, 문자 변환 함수, 문자열 연결 함수, 문자열 비교 함수, 문자열 복사 함수, 문자열 길이 계산 함수, 문자열 검색 함수, 문자열을 단어로 자르는 함수 등 라이브러리에서 제공하는 문자와 문자열을 처리하는 함수를 사용하는 방법을 알아본다.
9장. 데이터 변환 함수
10진 정수 형태의 문자열을 정수로 변환하는 함수, 10진 실수 형태의 문자열을 실수로 변환하는 함수, 특정 진수 형태의 문자열을 정수로 변환하는 함수 등과 같은 표준 라이브러리에서 제공하는 데이터 변환 함수를 사용하는 방법을 알아본다.
10장. 메모리 관리 함수
동적 메모리 할당과 해제 함수, 메모리 크기 변경 함수, 메모리 초기화 함수, 메모리 영역 복사 함수, 메모리 영역 검색, 비교 함수 등 표준 라이브러리에서 제공하는 메모리 관리 함수를 사용하는 방법을 알아본다.
11장. 입출력 함수
프로그램에서 가장 기본적이면서도 중요한 동작을 위해 라이브러리에서는 제공하는 40개에 가까운 입출력 함수 중 대표적으로 사용되는 25개의 입출력 함수들에 대해 설명한다.
12장. 수학 함수
절대값 함수, 나머지 함수, 난수 함수, 거듭제곱과 제곱근 함수 등 라이브러리에서 제공하는 수학 함수를 사용하는 방법을 알아본다.
13장. 탐색과 정렬 함수
선형 탐색 함수, 이진 탐색 함수, 이진 트리 관리 함수, 해시 테이블 관리 함수, 퀵 정렬 함수 등 라이브러리에서 제공하는 탐색과 정렬 함수를 사용하는 방법을 알아본다.
14장. 날짜와 시간 함수
현재 시간을 표시하는 함수, 시간 정보를 보기 좋은 형식으로 변환하는 함수, 시간차를 구하는 함수 등 라이브러리에서 제공하는 날짜와 시간과 관련된 함수를 사용하는 방법을 알아본다.
15장. vi로 편집하기4부. 리눅스가 동작하는 프로그래밍
기능이 강력하고 작은 메모리에서도 빠르게 동작해 가장 많이 사용되는 에디터 중 하나인 vi를 사용해 C 프로그램을 작성하기 위해 알아야 할 사항을 실습과 함께 하나하나 점검해 본다.
16장. gcc로 컴파일하기
gcc를 이용해 전처리, 컴파일, 어셈블링, 링크 등의 여러 단계를 거쳐 소스 파일을 실행 파일로 변환하는 과정을 살펴보고, 프로그래밍의 효율을 높일 수 있도록 gcc가 제공하는 다양한 기능을 알아본다.
17장. make로 컴파일 자동화하기
여러 파일로 이루어진 큰 프로그램을 개발할 때 필수적인 툴인 make는 파일 상호간의 의존성을 이용해 컴파일하는 데 드는 시간을 크게 절약해준다. 그래서 여러 개의 파일로 이루어진 큰 프로그램을 개발할 때 필수적이다.
18장. gdb로 디버깅하기
C, C++ 디버깅 툴인 gdb는 프로그램을 실행시키면서 디버깅할 수 있고, 또한 코어 덤프된 프로그램의 버그도 조사할 수 있다. 그리고 gdb 안에서 프로그램을 실행시키면서 디버깅할 수 있고 이미 실행중인 프로세스에 대해서도 디버깅이 가능하다.
19장. 오류 처리하기5부. 통신과 네트워크 프로그래밍
라이브러리 함수를 이용하다가 발생하는 오류의 원인을 파악하는 방법과 이를 처리하는 다양한 방법을 소개한다.
20장. 리눅스 프로그램 환경
임의의 환경에서 실행되는 프로그램의 환경 정보를 얻어 이를 효율적으로 활용하는 방법을 알아보고 다양한 프로그램을 작성해본다.
21장. 시스템에서 제공하는 파일 입출력
시스템에서 제공하는 파일 입출력 기능을 이용해 파일 읽기/쓰기, 파일 생성, 파일 크기 변경, 파일 연결 등 다양한 주제를 프로그램과 함께 살펴본다.
22장. 파일과 디렉토리 다루기
이 장에서 다루는 내용은 우리가 사용하는 대부분의 파일과 디렉토리에 관련된 명령어들을 구현하는 데 기반이 되는 기술이다.
23장. 프로세스 제어하기
현재 실행 중에 있는 프로그램인 프로세스를 어떻게 생성하고 종료하는지, 그리고 프로세스를 제어하는 방법에 대해 알아본다. 그리고 간단한 셸도 직접 구현해 본다.
24장. 시그널 -키 눌러도 끄떡없는 프로그램 만들자
키와 같이 프로세스에 보내는 메시지인 시그널이 무엇인지 자세히 살펴보고 프로그램에 시그널을 보내는 방법과 시그널이 도착했을 때 대처하는 방법 등을 알아본다.
25장. 파일과 파이프를 이용한 통신
파일이나 파이프를 이용해 여러 프로세스가 서로 데이터를 주고 받는 프로세스 간 통신에 대해 알아본다. 파일을 이용한 통신이 제대로 이루어지기 위해서는 레코드 잠금이 필요하므로 이에 대해 살펴보고, 파이프를 이용한 통신은 일반적인 파이프와 FIFO로 구분할 수 있는 데 이에 대해 살펴본다.
26장. 메시지 큐, 공유 메모리, 세마포어를 이용한 통신
메시지 큐, 공유 메모리, 세마포어를 이용해 프로세스 간 통신하는 프로그램을 구현해본다. 즉, 프로세스가 메시지 큐를 이용해 데이터를 주고 받고, 공유 메모리를 이용해 데이터를 공유하며, 세마포어는 공유하는 데이터의 접근에 필요한 동기화를 제공함으로써 통신이 이루어진다.
27장. 기본 네트워크 프로그래밍
네트워크로 연결된 프로세스 간에 통신이 이루어지는 프로그램을 네트워크 프로그램이라 하는 데, 통신 방법에 따라 크게 TCP와 UDP로 구분하여 구현할 수 있다. TCP를 이용한 네트워크 프로그램은 속도는 느리나 신뢰성을 보장하고, UDP를 이용한 네트워크 프로그램은 신뢰성은 보장되지 않으나 빠른 속도를 제공한다. 이 장에서는 네트워크 프로그래밍, TCP, UDP에 대한 개념을 살펴보고 직접 TCP와 UDP를 이용해서 간단한 네트워크 프로그램을 구현해본다.
28장. 고급 네트워크 프로그래밍
27장에서 살펴본 내용을 기반으로 여러 클라이언트와 서버 간에 통신하는 프로그램과 비순차적 통신인 채팅 프로그램을 구현해본다.
이전 글 : 닷넷 스트림(.NET Stream)
최신 콘텐츠