| 000 | 00852namccc200289 k 4500 | |
| 001 | 000000810126 | |
| 005 | 20100805083409 | |
| 007 | ta | |
| 008 | 030127s2003 ulka 001a kor | |
| 020 | ▼a 8931423640 ▼g 13000 : ▼c ₩27,000 | |
| 035 | ▼a KRIC08530449 | |
| 040 | ▼a 211059 ▼d 211009 | |
| 049 | 1 | ▼l 121074870 ▼f 과학 ▼l 121074871 ▼f 과학 ▼l 111241923 |
| 082 | 0 4 | ▼a 005.43 ▼2 21 |
| 090 | ▼a 005.43 ▼b 2003 | |
| 245 | 0 0 | ▼a Unix & Linux C Programming / ▼d 권상호...[등저]. |
| 260 | ▼a 서울 : ▼b 영진닷컴 , ▼c 2003. | |
| 300 | ▼a 785 p. : ▼b 삽도 ; ▼c 24 cm. | |
| 500 | ▼a 색인수록 | |
| 500 | ▼a 공저사항: 고성규, 강효성, 민기획 | |
| 700 | 1 | ▼a 권상호, ▼e 등저 |
| 700 | 1 | ▼a 고성규, ▼e 등저 |
| 700 | 1 | ▼a 강효성, ▼e 등저 |
| 700 | 1 | ▼a 민기획, ▼e 등저 |
| 940 | ▼a Unix and Linux C Programming | |
| 940 | ▼a 유닉스 앤 리눅스 씨 프로그래밍 |
소장정보
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 중앙도서관/제2자료실(3층)/ | 청구기호 005.43 2003 | 등록번호 111241923 (10회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 2 | 소장처 과학도서관/보존서고5(동양서)/ | 청구기호 005.43 2003 | 등록번호 121074870 (52회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 3 | 소장처 과학도서관/보존서고5(동양서)/ | 청구기호 005.43 2003 | 등록번호 121074871 (49회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 4 | 소장처 세종학술정보원/과학기술실(5층)/ | 청구기호 005.43 2003 | 등록번호 151140365 (28회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 중앙도서관/제2자료실(3층)/ | 청구기호 005.43 2003 | 등록번호 111241923 (10회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 과학도서관/보존서고5(동양서)/ | 청구기호 005.43 2003 | 등록번호 121074870 (52회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. 2 | 소장처 과학도서관/보존서고5(동양서)/ | 청구기호 005.43 2003 | 등록번호 121074871 (49회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
| No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
|---|---|---|---|---|---|---|---|
| No. 1 | 소장처 세종학술정보원/과학기술실(5층)/ | 청구기호 005.43 2003 | 등록번호 151140365 (28회 대출) | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
컨텐츠정보
책소개
유닉스/리눅스 환경에서의 C 프로그래밍에 대한 내용을 담고 있는 책으로 전체적으로 유닉스/리눅스 시스템 프로그래밍의 기본적인 부분들을 이해하기 쉽도록 설명했고, 단순한 프로그래밍적인 지식뿐만 아니라 시스템 자체의 내부적인 구현도 함께 설명해 기초를 닦는데 도움이 되도록 했다.
1부에서는 유닉스/리눅스 환경에서의 프로그래밍이란 어떤 것인지, 필수적인 vi 에디터와 gcc 컴파일러에 대한 내용을 담았고, 2부에서는 C 프로그래밍의 기반을 다지는 내용을 학습한다. C언어의 문법과 소스코드에 대한 설명을 학습한다.
3부에서는 본격적인 유닉스/리눅스 환경의 프로그래밍과 라이브러리에 대한 내용을 학습하며, 파일및 디렉토리 다루기, 프로세스 다루기, IPC 등에 대한 내용을 담고 있다. 마지막 4부에서는 네트워크 프로그래밍에 관한 내용으로 소켓 프로그래밍 방법, 소켓 라이브러리를 이용한 프로그래밍 방법을 학습한다.
정보제공 :
저자소개
민기획(지은이)
<Unix & Linux C Programming>
권상호(지은이)
아주대학교 정보및 컴퓨터공학부. 아주대학교 이동통신 연구실 인턴. 모바일 IP 개발, SMS 솔루션 개발 경력이 있다. 지은 책으로는 <Java 2 JDK 1.4 30일 완성>, <Unix & Linux C Programming>등이 있다.
고성규(지은이)
아주대학교 정보및 컴퓨터공학부. 아주대학교 시스템 소프트웨어 연구실 인턴. 유닉스/리눅스 시스템 보안 툴 개발에 참여했다.
강효성(지은이)
<Unix & Linux C Programming>
목차
목차 Part 1 유닉스·리눅스 환경에서 프로그래밍 시작하기 = 24 Chapter 1 유닉스·리눅스 첫 걸음 = 25 1. 유닉스와 C 언어의 만남 = 26 유닉스의 역사 = 26 유닉스의 특징은 '멀티' = 27 C 언어가 유닉스에서 중요한 이유 = 28 유닉스 표준과 구현 = 29 2. 유닉스의 계보를 잇는 리눅스와 GNU 소프트웨어 = 29 3. 유닉스 프로그래밍을 위해 갖추어야 할 환경 = 30 4. 꼭 알아야 할 기본적인 유닉스 명령어들 = 31 로그인과 로그아웃 = 31 유닉스에 익숙해지기 위한 첫 걸음, 쉘과 친해지기 = 32 간단한 명령어로 살펴보는 유닉스 디렉토리 구조 = 34 파일과 디렉토리 조작을 위한 기본 명령어 = 37 유닉스가 제공하는 서비스를 관리하는 프로세스 관련 명령어 = 42 필요에 따라 표준 입출력을 바꾸는 방법 = 45 윈도의 '바로 가기'와 비슷한 링크 명령 이해하기 = 50 파일의 읽기, 쓰기, 실행 권한 관리를 위한 명령 = 50 5. 요약 = 52 Chapter 2 유닉스에서 C 프로그래밍 시작하기 = 53 1. C 프로그래밍을 위한 첫 단계 에디터와 컴파일러 준비하기 = 54 2. 단순하지만 강력한 기능으로 무장한 텍스트 에디터 vi = 55 vi를 실행해 보자 = 55 삭제, 복사, 붙이기를 통해 익히는 기본적인 편집 = 58 다수의 파일을 열었을 경우 = 61 편집한 파일을 저장하고 에디터 종료하기 = 62 원하는 패턴 찾기 = 65 비주얼 모드로 자르기와 붙이기 손쉽게 하기 = 67 그 밖의 기능들 = 68 3. 너무나 유명한 오픈 소스 컴파일러 gcc 사용법 = 68 gcc 첫 걸음 떼기 = 69 꼭 기억해야 할 gcc의 중요 옵션들 = 72 헤더 파일 관련 옵션 = 74 라이브러리 관련 옵션 = 75 4. 궁금증을 풀어주는 온라인 도움말, 맨 페이지 활용하기 = 76 5. 함수에서 발생하는 에러 처리하기 = 78 6. 시스템 콜과 라이브러리 함수의 관계 = 81 7. 요약 = 82 Part 2 C프로그래밍 기반 다지기 = 84 Chapter 3 C 언어의 자료형 = 85 1. C 언어는 자료형을 엄격히 관리한다 = 86 C 자료형 알아보기 = 86 문자형 = 88 정수형 = 89 실수형 = 90 포인터 형 = 92 자료형의 크기 정보가 필요할 때 사용하는 sizeof 연산자 = 92 2. 변수란 무엇인가? = 94 변수의 선언과 대입 = 94 변수의 이름 붙이기 = 95 오버플로우와 정확도 손실 = 96 3. 변할 수 없는 데이터 '상수' = 98 리터럴 상수 = 99 기호 상수 = 102 열거형 상수 = 106 4. 요약 = 109 Chapter 4 문장, 수식, 연산자 = 111 1. 기본적인 문법은 몸으로 익혀라 = 112 문장이란 무엇인가? = 112 수식은 무엇인가? = 114 2. 기본적인 연산자 = 115 할당 연산자 = 115 산술 연산자와 부호 연산자 = 117 증가 연산자와 감소 연산자 = 118 복합 할당 연산자 = 122 관계 연산자 = 123 3. 연산자의 우선 순위와 결합 방향 = 126 수식에서 연산자 우선 순위 = 127 결합 방향 = 128 4. 그 밖의 연산자 = 129 참, 거짓의 논리 값을 다루는 '논리 연산자' = 129 데이터 형 변환을 위해 사용하는 '캐스팅 연산자' = 132 여러 수식 연결을 위한 '콤마 연산자' = 134 조건문을 수식으로 나타내기 위한 '조건 연산자' = 135 5. 비트 연산자 = 137 쉬프트 연산자 = 137 비트 논리 연산자 = 140 6. 요약 = 141 Chapter 5 제어 구조 = 145 1. 참, 거짓으로 프로그램 흐름을 제어하는 분기 구조 = 146 기본적인 if 문 = 146 if else 문 = 148 if else 구조의 확장 = 149 if와 else의 결합 = 151 2. 지정된 구간을 반복하는 구조 '루프' = 152 while 루프 = 152 do while 루프 = 156 for 루프 = 157 break와 continue = 159 3. goto 문 = 160 4. switch 문을 이용한 다중 선택 구조 = 162 5. 요약 = 164 Chapter 6 함수 다루기 = 165 1. 함수란 무엇인가 = 166 함수의 개념 = 166 함수의 기본적인 사용법 = 168 실제 전달 인자와 형식 전달 인자 = 172 함수를 이용한 구조화 프로그래밍 = 173 main 함수와 실행 시간 인자 = 177 모듈화 = 180 2. 라이브러리 함수의 사용 = 182 3. 효과적인 반복 작업을 위한 수행을 위한 선택 '재귀 함수' = 184 반복적 알고리즘과 재귀적 알고리즘 = 184 재귀 함수의 구현 = 184 재귀 함수의 장단점 = 185 4. 보다 복잡한 함수 이용하기 = 186 가변 인자를 가지는 함수 = 186 ANSI C와 Pre- ANSI C = 190 5. 요약 = 192 Chapter 7 배열과 포인터 = 193 1. 배열이란 무엇인가? = 194 배열의 선언 = 194 배열의 초기화 = 197 2. 주소를 저장하기 위해 사용되는 변수 '포인터' = 198 포인터의 개념 = 200 포인터의 사용 = 201 3. 배열과 포인터 = 210 배열과 포인터의 관계 = 210 포인터의 연산 = 214 함수의 인자로 배열을 사용하기 = 215 배열과 포인터의 차이점 = 220 4. 2차원 배열과 이중 포인터 = 221 2차원 배열 = 221 이중 포인터 = 224 주소 연산자(&)와 역참조 연산자(*) = 228 2차원 배열과 이중 포인터의 관계 = 229 2차원 배열을 함수의 인자로 사용하기 = 229 다차원 배열과 다중 포인터 = 231 5. 요약 = 232 Chapter 8 문자열과 기본적인 입출력 = 233 1. 문자열이란? = 234 문자열의 초기화 = 235 문자열과 포인터 = 236 문자열의 배열 = 236 문자열 리터럴과 포인터 = 239 2. 기본적인 I/O 함수 = 240 포맷화 I/O = 240 포맷화 I/O의 응용 '시간 표현하기' = 245 문자 및 문자열 관련 I/O 함수 = 247 3. 문자열 처리 함수 = 250 strlen 함수로 문자열의 길이 얻기 = 250 strcat과 strncat 함수로 문자열 연결하기 = 250 srcpy와 strncpy 함수로 문자열 복사하기 = 253 문자열 비교하기 = 257 기타 유용한 문자열 함수 = 260 문자열 사용의 주의 사항 = 264 4. 요약 = 265 Chapter 9 구조체와 공용체 = 267 1. 구조체 = 268 구조체의 정의 = 269 구조체 멤버의 접근 = 271 구조체의 초기화 = 271 구조체의 배열과 typedef를 이용한 형 정의 = 273 중첩된 구조체 = 275 2. 구조체와 포인터 = 276 구조체의 메모리 배치 = 276 구조체에 대한 포인터 = 280 함수의 인자와 리턴형으로 구조체 사용하기 = 281 구조체의 복사 = 285 3. 공용체 = 290 공용체의 정의와 구조 = 290 구조체 vs 공용체 = 294 4. 비트필드 = 294 5. 요약 = 297 Chapter 10 파일과 스트림 = 299 1. 파일과 스트림 = 300 고수준 I/O와 저수준 I/O = 300 표준 파일 = 301 스트림 = 302 2. 파일 다루기 = 303 파일을 다루기 위한 기본 함수들 = 303 문자 입출력 함수 = 308 블록 단위 입출력 함수 = 311 파일의 무작위 접근 = 315 스트림과 버퍼링 = 318 3. 파일 다루기 예제 = 321 문자열 정렬의 재고찰 = 321 4. 요약 = 325 Chapter 11 C 전처리기 = 327 1. 전처리기란 무엇인가? = 328 전처리기의 동작 = 328 2. 매크로 정의 = 330 #define 지시어을 이용한 기본적인 매크로 정의 = 330 매크로 함수 사용하기 = 332 함수와 매크로 = 337 매크로 정의와 취소하기 = 339 3. 헤더 파일 포함하기 = 339 헤더 파일의 정보 = 340 4. 조건부 컴파일 = 342 조건부 컴파일을 위한 지시어 #ifdef, #else, #endif = 342 #ifndef과 헤더 파일 = 345 if와 else if와 같은 역할을 하는 지시자 #if, #elif, #else = 347 미리 정의된 매크로 = 348 #과 ## 연산자 = 350 5. 요약 = 351 Chapter 12 스토리지 클래스와 모듈화 = 353 1. 메모리 배치 = 354 프로그램과 프로세스 = 354 메모리 배치 = 354 2. 스토리지 클래스 = 360 변수의 속성 종류 '유효 범위, 연결, 지속 기간' = 360 자동 스토리지 클래스 = 361 레지스터 스토리지 클래스 = 362 외부 변수 스토리지 클래스 = 363 정적 변수 스토리지 클래스 = 366 유효 범위 규칙 = 369 전역 변수와 지역 변수 = 371 3. 정적 외부 변수와 정적 함수 = 371 정적 외부 변수 = 371 외부 함수와 정적 함수 = 374 4. 모듈화 프로그래밍 = 375 모듈의 개념 = 375 왜 모듈화가 필요한가? = 375 C에서의 모듈화 = 377 모듈화와 헤더 파일 = 380 모듈화와 관련된 규칙 = 382 5. 요약 = 382 Chapter 13 메모리 다루기 고급 = 383 1. 동적 메모리 할당 = 384 메모리의 정적 할당과 동적 할당 = 384 메모리를 동적으로 할당하기 = 385 동적 할당된 메모리의 해제 = 386 메모리 동적 할당 예제 = 387 일반 포인터 = 389 널 포인터 = 391 함수 포인터의 개념 = 391 함수 포인터 사용의 예 = 394 상수 포인터 = 399 2. 메모리 관련 함수들 = 400 메모리의 초기화 = 401 메모리의 복사 = 401 메모리의 비교 = 402 메모리에서 특정 바이트의 검색 = 402 기타 폐기된 메모리 관련 함수들 = 402 3. 도서 목록 관리 프로그램 개발 = 403 프로그램의 요구 사항 파악 = 403 필요한 자료 구조 '연결 리스트' = 404 프로그램을 모듈화 하기(1) - 책 모듈 = 407 프로그램을 모듈화 하기(2) - 리스트 모듈 = 412 프로그램을 모듈화 하기(3) - 사용자 명령 처리 모듈 = 420 모듈화 더 나아가기 = 428 4. 요약 = 429 Part 3 유닉스/리눅스 프로그래밍 = 431 Chapter 14 파일 입출력 = 433 1. 파일 디스크립터 = 434 2. 시스템 콜을 이용한 파일 입출력 = 435 3. open 함수 = 436 4. creat 함수 = 439 5. close 함수 = 440 커널의 버퍼 캐시 = 441 6. lseek 함수 = 442 7. read 함수 = 444 8. write 함수 = 446 9. 파일 입출력 함수들을 이용한 예제 소스 코드 = 446 10. 커널의 파일 입출력 정보 관리 = 453 사용자 파일 디스크립터 테이블 = 453 파일 테이블 = 454 v-node 테이블 = 454 11. dup 함수 = 458 12. fcntl 함수 = 460 fcntl 함수를 이용한 예제 프로그램 = 462 13. 원자성 오퍼레이션 = 467 14. 스트림과 표준 입출력 라이브러리 = 472 스트림 = 472 시스템 콜 파일 입출력 함수들과 표준 입출력 라이브러리 = 473 15. 표준 입출력 라이브러리에서의 버퍼링 = 474 16. 요약 = 478 Chapter 15 파일 및 디렉토리 다루기 = 479 1. 유닉스의 파일시스템 = 480 파일시스템의 기본 구조 = 480 i-node = 481 디렉토리 정보 = 483 2. 파일 유형 = 485 3. 파일 접근 권한과 소유자 = 486 실제 사용자 ID와 실제 그룹 ID = 487 유효 사용자 ID와 유효 그룹 ID = 489 파일 접근 권한 = 491 4. 스티키 비트 = 492 5. stat, lstat fstat 함수 = 493 6. 파일 접근 권한과 소유자에 관한 함수들 = 499 access 함수 = 499 umask 함수 = 500 chmod, fchmod 함수 = 501 chown, fchown, lchown 함수 = 503 7. 파일 링크와 관련된 함수들 = 504 하드 링크와 심볼릭 링크 = 504 link 함수 = 505 unlink 함수 = 505 symlink 함수 = 508 readlink 함수 = 508 8. utime 함수 = 509 9. 디렉토리와 관련된 함수들 = 510 getcwd 함수 = 510 chdir 함수 = 511 mkdir 함수 = 511 rmdir 함수 = 512 opendir, closedir 함수 = 512 readdir 함수 = 513 10. 요약 = 518 Chapter 16 프로세스 다루기 = 521 1. 프로세스 ID = 522 getpid, getppid 함수 = 523 2. 환경 변수 = 524 getenv, putenv 함수 = 527 3. 사용자 ID와 사용자 그룹 ID = 529 getuid, getgid, geteuid, getegid 함수 = 529 사용자 ID, 사용자 그룹 ID들의 변환 = 529 seteuid, setegid 함수 = 532 getlogin 함수 = 538 4. 프로세스의 종료 = 538 exit, _exit 함수 = 538 atexit 함수 = 539 정상적 종료와 비정상적 종료 = 542 5. fork 함수 = 543 copy-on-write 기법 = 551 파일 디스크립터와 스트림의 상속 = 551 6. wait, waitpid 함수 = 556 좀비 프로세스 = 558 7. exec 함수 = 563 close-on-exec 플래그 = 569 8. vfork 함수 = 570 9. system 함수 = 573 10. 프로세스 그룹 = 574 프로세스 그룹이란? = 574 getpgrp 함수 = 575 setpgid 함수 = 576 11. 세션 = 576 세션이란? = 576 setsid 함수 = 577 12. 제어 터미널과 작업 제어 = 578 전면 작업과 배경 작업 = 578 제어 터미널과 작업 제어 = 580 13. 요약 = 582 Chapter 17 시그널 = 585 1. 시그널이란? = 586 2. 시그널의 발생 = 587 3. 시그널의 처리 = 588 4. 시그널의 종류 = 589 5. 시그널 핸들러 등록하기 - signal 함수 = 591 6. 시그널 핸들러 처리시 문제점들 = 599 시스템 콜과 시그널 = 599 재진입 함수들과 시그널 = 604 7. 시그널 블로킹과 시그널 셋 = 605 시그널의 블로킹 = 605 시그널 셋과 관련된 함수들 = 607 sigprocmask 함수 = 608 set = 608 sigpending 함수 = 609 8. 시그널 핸들러 등록하기 - sigaction 함수 = 613 9. 시그널을 이용한 좀비 프로세스 피하기 = 623 SIGCHLD 시그널을 이용하는 방법 = 623 sigaction 함수의 옵션을 이용하는 방법 = 626 10. sigsuspend 함수 = 627 11. kill, raise 함수 = 632 12. alarm 함수 = 637 13. pause 함수 = 638 14. abort 함수 = 639 15. sleep 함수 = 639 16. 요약 = 640 Chapter 18 IPC(Inter Process Communication) = 641 1. IPC란? = 642 2. 파이프 = 643 pipe 함수 = 643 쉘에서의 파이프 = 650 파이프를 이용한 양방향 통신 = 655 3. popen, pclose 함수 = 658 4. FIFO = 661 mkfifo 함수 = 661 FIFO를 이용한 서버, 클라이언트 프로그램 = 668 5. 요약 = 682 Part 4 네트워크 프로그래밍 = 684 Chapter 19 네트워크 프로그래밍의 첫걸음 = 685 1. TCP/IP의 개요 = 686 인터넷과 TCP/IP = 686 TCP와 UDP = 688 IP 주소와 포트 번호 = 689 데이터 링크 계층 = 691 서버와 클라이언트 = 691 2. 소켓 API에 대한 소개 = 692 3. 소켓 프로그래밍을 하기 위한 준비 운동 = 693 소켓 어드레스 구조체 = 693 바이트 오더링 함수 = 695 inet으로 시작하는 함수들 = 696 4. 기본적인 소켓 API 함수들 = 698 socket 함수 = 698 bind 함수 = 698 connet 함수 = 700 listen 함수 = 701 accept 함수 = 702 send, recv 함수 = 703 sendto, recvfrom 함수 = 704 close 함수 = 705 5. 요약 = 705 Chapter 20 기본적인 소켓 프로그래밍 = 707 1. 소켓의 전반적인 동작 = 708 2. TCP 서버 프로그래밍 = 709 3. TCP 클라이언트 프로그래밍 = 715 4. TCP 에코 서버/클라이언트의 사용 = 718 5. UDP 서버 프로그래밍 = 720 6. UDP 클라이언트 프로그래밍 = 723 7. UDP 에코 서버/클라이언트의 사용 = 725 8. 요약 = 726 Chapter 21 추가적인 소켓 프로그래밍 = 727 1. 동시 동작 서버 = 728 2. SIGCHLD 시그널 처리 = 730 3. EINTR 처리 = 733 4. uname 서버와 클라이언트 예제 = 734 5. 요약 = 739 Appendix : 부록 = 741 A. 라이브러리의 활용 = 742 라이브러리 = 742 라이브러리를 만들어보자 = 746 라이브러리의 사용 = 748 실제 적용의 예 = 749 요약 = 755 B. make의 사용 = 756 기본적인 사용법 = 756 all과 clean = 760 C. gdb의 사용 = 763 gdb를 사용하기 위한 준비 = 763 리스트 하기 = 764 프로그램 실행하기 = 766 정지점(breakpoint) = 768 단계별 실행 = 773 변수 값 조사와 대입 = 775 함수 호출 = 778 D. 정수 데이터 다루기 = 779 정수형의 저장 = 779 16진수 표현 = 781 E. 참고할 만한 웹사이트, 참고서적 = 784 찾아보기 = 786
