이미 소장하고 있다면 판매해 보세요.
|
제1장 시작하기
유닉스, 리눅스, GNU에 대한 소개 유닉스란? 리눅스란? GNU 프로젝트와 무료 소프트웨어 재단(Free Software Foundation) 리눅스 배포 리눅스 프로그래밍 리눅스 프로그램 C 컴파일러 실습하기 - 첫번째 리눅스 C 프로그램 개발 시스템 로드맵 실습하기 - 정적 라이브러리 도움말 실습하기 - 매뉴얼 페이지와 info 요약 제2장 쉘 프로그래밍 쉘로 프로그래밍하는 이유 철학... 쉘이란 무엇인가? 파이프와 리디렉션 출력 리디렉트하기 입력 리디렉트하기 파이프 프로그래밍 언어로서의 쉘 대화식 프로그램 스크립트 만들기 스크립트를 실행 가능하도록 만들기 쉘 문법 변수 실습하기 - 변수 실습하기 - 매개변수와 환경 변수 조건 제어 구조 실습하기 - if 명령 사용하기 실습하기 - elif를 사용하여 더 많은 검사를 수행하기 실습하기 - 고정된 문자열을 사용하는 for 반복문 실습하기 - 와일드카드 확장을 사용하는 for 반복문 실습하기 - Here We Go Again, Again 실습하기 - 사례 1: 사용자 입력 실습하기 - 사례 2: 패턴을 함께 모으기 실습하기 - 사례 3: 다중 구문 실행하기 실습하기 - AND 리스트 실습하기 - OR 리스트 함수 실습하기 - 간단한 함수 실습하기 - 값 반환하기 명령 실습하기 - 점 명령 실습하기 - 변수 내보내기 실습하기 - 신호 트랩하기 실습하기 - 테스트와 함께 find 사용하기 실습하기 - 기본 grep 사용법 실습하기 - 정규식 명령 실행 실습하기 - 매개변수 처리 히어 도큐먼트 실습하기 - 히어 도큐먼트 사용하기 실습하기 - 히어 도큐먼트의 또 다른 사용 스크립트 디버깅하기 그래픽을 보여주자 - Dialog 유틸리티 실습하기 - dialog 유틸리티 사용하기 실습하기 모두 합치기 요구사항 디자인 실습하기 - CD 응용프로그램 요약 제3장 파일 작업 리눅스 파일 구조 디렉토리 파일과 장치 시스템 호출과 장치 드라이버 라이브러리 함수 저수준 파일 액세스 write read open 초기 권한 실습하기 - 파일 복사 프로그램 파일을 관리하기 위한 다른 시스템 호출 표준 I/O 라이브러리 fopen fread fwrite fclose fflush fseek fgetc, getc, getchar fputc, putc, putchar fgets, gets 형식화된 입출력 printf, fprintf, sprintf scanf, fscanf, sscanf 다른 스트림 함수 실습하기 - 다른 파일 복사 프로그램 스트림 에러 스트림과 파일 설명자 파일과 디렉토리 관리 chmod chown unlink, link, symlink mkdir, rmdir chdir, getcwd 디렉토리 스캔하기 opendir readdir telldir seekdir closedir 실습하기 - 디렉토리 스캔 프로그램 에러 strerror perror /proc 파일 시스템 고급 주제: fcntl과 mmap fcntl mmap 실습하기 - mmap 사용 요약 제4장 리눅스 환경 프로그램 인자 실습하기 - 프로그램 인자 getopt 실습하기 - getopt getopt_long 환경 변수 실습하기 - getenv와 putenv 환경 변수의 사용 environ 변수 실습하기 - environ 시간과 날짜 실습하기 - time 실습하기 - gmtime 실습하기 - ctime 실습하기 - strftime과 strptime 임시 파일 실습하기 - tmpnam과 tmpfile 사용자 정보 실습하기 - 사용자 정보 호스트 정보 실습하기 - 호스트 정보 로깅 실습하기 - syslog 실습하기 - logmask 리소스와 제한 실습하기 - 리소스 제한 요약 제5장 터미널 터미널에서 읽고 쓰기 실습하기 - C로 된 메뉴 루틴 실습하기 - 출력 리디렉션 점검하기 터미널과 대화하기 실습하기 - /dev/tty 사용하기 터미널 드라이버와 일반 터미널 인터페이스(General Terminal Interface) 개요 하드웨어 모델 termios 구조체 입력 모드 출력 모드 제어 모드 로컬 모드 특수 제어 문자 터미널 속도 추가 함수 실습하기 - termios를 사용한 패스워드 프로그램 실습하기 - 각 문자 읽기 터미널 출력 터미널 형식 터미널 형식 식별하기 terminfo 항목 사용하기 실습하기 - 종합 터미널 제어 키 입력 검출 실습하기 - 고유의 kbhit 가상 콘솔 의사(pseudo) 터미널 요약 제6장 curses를 사용하여 텍스트 기반 화면 관리하기 curses와 컴파일하기 개념 실습하기 - 간단한 curses 프로그램 초기화와 종료 화면에 출력하기 화면으로부터 읽기 화면 지우기 커서 이동하기 문자 특성 실습하기 - 이동, 삽입, 특성 키보드 키보드 모드 키보드 입력 실습하기 - 키보드 모드와 입력 윈도우 WINDOW 구조체 일반화된 함수 윈도우를 이동하고 갱신하기 실습하기 - 다중 윈도우 화면 새로 고침 최적화 하위윈도우(subwindow) 실습하기 - 하위윈도우 키패드(Keypad) 실습하기 - 키패드 사용하기 색(Color) 실습하기 - 색 색 다시 정의하기 패드(pad) 실습하기 - 패드 사용하기 CD 모음 응용프로그램 실습하기 - 새로운 CD 모음 응용프로그램 실습하기 - main 살펴보기 실습하기 - 메뉴 실습하기 - 데이터베이스 파일 조작 실습하기 - CD 데이터베이스에 질의하기 요약 제7장 데이터 관리 메모리 관리 간단한 메모리 할당하기 실습하기 - 간단한 메모리 할당 큰 메모리 할당하기 실습하기 - 모든 물리적 메모리 요구하기 실습하기 - 사용 가능한 메모리 메모리 오용 실습하기 - 메모리 오용하기 널 포인터 실습하기 - 널 포인터에 액세스하기 메모리 해지하기 실습하기 - 메모리 해지하기 다른 메모리 할당 함수 파일 잠금 잠금 파일 만들기 실습하기 - 잠금 파일 만들기 실습하기 - 협동 잠금 파일 잠금 영역 잠금과 함께 읽고 쓰기 실습하기 - fcntl로 파일 잠그기 실습하기 - 파일의 잠금을 테스트하기 경쟁 잠금 실습하기 - 경쟁 잠금 다른 잠금 명령 교착 상태 데이터베이스 dbm 데이터베이스 dbm 루틴 dbm 액세스 함수 실습하기 - 간단한 dbm 데이터베이스 추가적인 dbm 함수 실습하기 - 데이터를 가져오고 지우기 CD 응용프로그램 디자인 갱신하기 dbm을 사용하는 CD 데이터베이스 응용프로그램 실습하기 - cd_data.h 실습하기 - app_ui.c 실습하기 - cdc_access.c 요약 제8장 MySQL 설치 미리 컴파일된 패키지 설치 후 구성 설치 후 문제 해결 MySQL 관리 명령 사용자를 만들고 권한 주기 패스워드 데이터베이스 만들기 데이터 형식 테이블 만들기 그래픽 도구 C에서 MySQL 데이터에 액세스하기 연결 루틴 에러 처리 SQL 구문 실행하기 실습하기 실습하기 기타 함수 CD 데이터베이스 응용프로그램 테이블 생성하기 데이터 추가하기 실습하기 C에서 응용프로그램 데이터에 액세스하기 요약 제9장 개발 도구 다중 소스 파일의 문제점 make 명령과 메이크파일 메이크파일의 문법 make의 옵션과 매개변수 실습하기 - 간단한 메이크파일 메이크파일의 주석 메이크파일의 매크로 실습하기 - 메이크파일에 매크로 사용하기 다중 대상 실습하기 - 다중 대상 내장 법칙 접미사(suffix)와 패턴 법칙 make로 라이브러리 관리하기 실습하기 - 라이브러리 관리 고급 주제: 메이크파일과 하위디렉토리 GNU make와 gcc 실습하기 - gcc -MM 소스 코드 제어 RCS 실습하기 - RCS와 GNU make 실습하기 - ident SCCS RCS와 SCCS 비교하기 CVS gCVS BitKeeper 매뉴얼 페이지 쓰기 소프트웨어 배포하기 패치 프로그램 다른 배포 유틸리티 RPM 패키지 RPM 패키지 파일로 작업하기 RPM 패키지 설치하기 RPM 패키지 빌드하기 다른 패키지 형식 개발 환경 xwpe C-Forge KDevelop 다른 환경 요약 제10장 디버깅 에러의 형식 일반적인 디버깅 기술 버그를 가진 프로그램 코드 검사 인스트루먼트(instrumentation) 실습하기 - 디버그 정보 제어 실행 gdb로 디버깅하기 gdb 시작하기 프로그램 실행하기 스택 추적 변수 살펴보기 프로그램의 소스 코드 보기 중단점(breakpoint) 지정하기 디버거에서 패치하기 gdb에 대한 더 많은 정보 다른 디버깅 도구 Lint: 프로그램에서 실수를 제거한다 함수 호출 도구 prof/gprof를 사용한 실행 프로파일링 어설션(assertion) 실습하기 - assert 메모리 디버깅 ElectricFence 실습하기 - ElectricFence valgrind 실습하기 - valgrind 요약 제11장 프로세스와 신호 프로세스는 무엇인가? 프로세스 구조 프로세스 테이블 프로세스 보기 시스템 프로세스 프로세 작업 예약 새 프로세스 시작하기 실습하기 - system 실습하기 - execlp 실습하기 - fork 프로세스 기다리기 실습하기 - wait 좀비(zombie) 프로세스 실습하기 - 좀비 입력과 출력 리디렉션 실습하기 - 리디렉션 쓰레드 신호 실습하기 - 신호 처리 신호 보내기 실습하기 - 알람 시계 실습하기 - sigaction 신호 집합 요약 제12장 POSIX 쓰레드 쓰레드란? 쓰레드의 장단점 첫번째 쓰레드 프로그램 실습하기 - 간단한 쓰레드 프로그램 동시 실행 실습하기 - 두 쓰레드의 동시 실행 동기화(synchronization) 세마포어를 사용한 동기화 실습하기 - 쓰레드 세마포어 뮤텍스를 이용한 동기화 실습하기 - 쓰레드 뮤텍스 쓰레드 특성 실습하기 - detached 상태 특성을 설정하기 실습하기 - 작업 예약 쓰레드 취소하기 실습하기 - 쓰레드 취소하기 다수의 쓰레드 실습하기 - 여러 가지 쓰레드 요약 제13장 프로세스간 통신: 파이프 파이프란 무엇인가? 프로세스 파이프 실습하기 - 외부 프로그램으로부터 출력 읽기 popen으로 출력 전송하기 실습하기 - 출력을 외부 프로그램으로 전송하기 더 많은 데이터를 전달하기 실습하기 - 파이프로부터 대용량 데이터를 읽기 popen의 구현 원리 실습하기 - popen은 쉘을 시작한다 파이프 호출 실습하기 - pipe 함수 실습하기 - fork를 통한 파이프 부모 프로세스와 자식 프로세스 실습하기 - 파이프와 exec 닫혀진 파이프로부터 읽기 표준 입력과 표준 출력으로 사용되는 파이프 실습하기 - 파이프와 dup 명명된 파이프(named pipe): FIFO 실습하기 - 명명된 파이프 만들기 FIFO에 액세스하기 실습하기 - FIFO 파일에 액세스하기 실습하기 - FIFO 파일을 열기 실습하기 - FIFO를 사용한 프로세스간 통신 고급 주제: FIFO를 사용하는 클라이언트/서버 실습하기 - 클라이언트/서버 응용프로그램 예제 CD 데이터베이스 응용프로그램 목적 구현 실습하기 - 헤더 파일 cliserv.h 클라이언트 인터페이스 함수 실습하기 - 클라이언트 인터프리터 실습하기 - 검색 서버 인터페이스 실습하기 - server.c 파이프 실습하기 - 파이프 구현 헤더 실습하기 - 서버 함수 실습하기 - 파이프 처리 실습하기 - 클라이언트 함수 실습하기 - 서버 결과를 받기 응용프로그램 요약 요약 제14장 세마포어, 공유 메모리, 메시지 대기열 세마포어 세마포어의 정의 이론적인 예제 리눅스 세마포어 기능 세마포어 사용하기 실습하기 - 세마포어 공유 메모리 shmget shmat shmdt shmctl 실습하기 - 공유 메모리 메시지 대기열 msgget msgsnd msgrcv msgctl 실습하기 - 메시지 대기열 CD 데이터베이스 응용프로그램 실습하기 - 서버 함수 개정 실습하기 - 클라이언트 함수 개정 IPC 상태 명령 세마포어 공유 메모리 메시지 대기열 요약 제15장 소켓 소켓은 무엇인가? 소켓 연결 실습하기 - 간단한 로컬 클라이언트 실습하기 - 간단한 로컬 서버 소켓 특성 소켓 만들기 소켓 주소 소켓 명명하기 소켓 대기열 만들기 연결 허용하기 연결 요청하기 소켓 닫기 소켓 통신 실습하기 - 네트워크 클라이언트 실습하기 - 네트워크 서버 호스트 바이트 순서와 네트워크 바이트 순서 네트워크 정보 실습하기 - 네트워크 정보 실습하기 - 표준 서비스에 연결하기 인터넷 데몬(inetd) 소켓 옵션 다중 클라이언트 실습하기 - 다중 클라이언트를 위한 서버 select 실습하기 - select 다중 클라이언트 실습하기 - 개선된 다중 클라이언트/서버 데이터그램 요약 제16장 GTK+를 이용한 GNOME 프로그래밍 X에 대한 개요 X 서버 X 클라이언트 X 프로토콜 Xlib 도구 키트 윈도우 관리자 GUI를 위한 다른 방법 - 플랫폼 독립적인 윈도우 API GTK+의 개요 GLib 형식 시스템 GTK+ 객체 시스템 GNOME 개요 GNOME/GTK+ 개발 라이브러리 설치하기 실습하기 - 평범한 GtkWindow 이벤트, 신호, 콜백 실습하기 - 콜백 함수 패킹 상자(packing box) 위짓 실습하기 - 위짓 컨테이너 레이아웃 GTK+ 위짓 GtkWindow GtkEntry 실습하기 - 사용자 이름과 패스워드 입력 GtkSpinButton 실습하기 - GtkSpinButton GtkButton 실습하기 - GtkCheckButton, GtkToggleButton, GtkRadioButton GtkTreeView 실습하기 - GtkTreeView GNOME 위짓 실습하기 - GNOME 윈도우 GNOME 메뉴 실습하기 - GNOME 메뉴 실습하기 - GNOME 매크로를 이용하여 만드는 메뉴 대화 상자(dialog) GtkDialog 모달 대화 상자 논모달 대화 상자 GtkMessageDialog CD 데이터베이스 응용프로그램 실습하기 - cdapp_gnome.h 실습하기 - interface.c 실습하기 - callback.c 실습하기 - main.c 요약 제17장 Qt를 이용한 KDE 프로그래밍 KDE와 Qt의 개요 Qt 설치하기 실습하기 - QMainWindow 신호와 슬롯 실습하기 - 신호와 슬롯 실습하기 - QBoxLayout 클래스 사용하기 Qt 위짓 QLineEdit 실습하기 - QLineEdit Qt 버튼 실습하기 - QButtons QComboBox 실습하기 - QComboBox QListView 실습하기 - QListView 대화 상자 QDialog QMessageBox QInputDialog 메이크파일을 간단하게 작성하기 위해 qmake 사용하기 메뉴와 도구 모음 실습하기 - 메뉴와 도구 모음을 가진 KDE 응용프로그램 KDE/Qt를 사용하는 CD 데이터베이스 응용프로그램 실습하기 - MainWindow 실습하기 - AddCdDialog 실습하기 - LogOnDialog 실습하기 - main.cpp 요약 제18장 장치(device) 드라이버 장치 드라이버 작성하기 장치 장치 계층 사용자 공간과 커널 공간 실습하기 - 커널 모듈 문자 장치 파일 연산 샘플 드라이버: schar 실습하기 - schar에 읽고 쓰기 실습하기 - ioctl 실습하기 - modinfo schar의 작동 원리 시간과 지피(jiffies) 짧은 지연 타이머 실습하기 - schar에서 타이머 구현 프로세서 포기하기 작업 대기열 미리 정의된 작업 대기열 메모리 관리 가상 메모리 영역 주소 공간 메모리 위치의 형식 장치 드라이버에서 메모리 구하기 사용자 공간과 커널 공간 사이에 데이터 전송하기 더 많은 데이터 옮기기 간단한 메모리 매핑 I/O 메모리 Iomap에서 장치의 대입 I/O 메모리 mmap 실습하기 - Iomap 모듈 I/O 포트 인터럽트 처리 IRQ 처리기 바텀 해브즈(bottom halves) 재진입성 하나의 인터럽트를 불가능하게 만들기 원자성 임계 영역 보호하기 블록 장치 radimo - 간단한 램(RAM) 디스크 모듈 미디어 변경 블록 장치를 위한 ioctl 요청(request) 함수 버퍼 캐시 실습하기 - radimo 더 나아가기 디버깅 웁스(Oops) 추적 모듈 디버깅하기 매직 키 커널 디버거 - kdb 원격 디버깅 디버깅에 관한 일반적인 사항 이식성 데이터 형식 엔디안(endian) 정렬 커널 소스 분석 요약 제19장 리눅스 표준 C 프로그래밍 언어 간략한 역사 이야기 GNU 컴파일러 모음 gcc 옵션 인터페이스와 LSB LSB 표준 라이브러리 LSB 사용자와 그룹 LSB 시스템 초기화 파일 시스템 계층 표준 /bin /boot /dev /etc /home /lib /mnt /opt /root /sbin /tmp /usr /var 표준에 관한 더 읽을거리 요약 찾아보기 |