logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

리눅스 API의 모든 것 Vol. 1 기초 리눅스 API

리눅스 API의 모든 것 Vol. 1 기초 리눅스 API

(파일, 메모리, 프로세스, 시그널, 타이머)

마이클 커리스크 (지은이), 김기주, 김영주, 우정은, 지영민, 채원석, 황진호 (옮긴이)
  |  
에이콘출판
2012-07-12
  |  
50,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
알라딘 45,000원 -10% 0원 2,500원 42,500원 >
yes24 로딩중
교보문고 로딩중
영풍문고 로딩중
인터파크 로딩중
11st 로딩중
G마켓 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
로딩중

e-Book

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

리눅스 API의 모든 것 Vol. 1 기초 리눅스 API

책 정보

· 제목 : 리눅스 API의 모든 것 Vol. 1 기초 리눅스 API (파일, 메모리, 프로세스, 시그널, 타이머)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 리눅스/유닉스 프로그래밍
· ISBN : 9788960773196
· 쪽수 : 1120쪽

책 소개

리눅스에서 프로그램을 작성할 때 사용하는 시스템 호출과 라이브러리 함수를 설명한 책으로, 해당 함수를 사용할 수 있는 리눅스 버전, 버전별 차이 등을 꼼꼼하게 정리했다. 워낙 방대한 내용이라 1권과 2권으로 나눠 구성했으며, 1권은 기초편으로, 리눅스 프로그래밍에서 흔히 쓰이는 파일 관리, 메모리 관리, 프로세스 관리, 시그널 처리, 타이머 사용법 등을 다룬다.

목차

1장 역사와 표준
___1.1 유닉스와 C의 간략한 역사
___1.2 리눅스의 간략한 역사
___1.3 표준화
___1.4 정리

2장 기본 개념
___2.1 핵심 운영체제: 커널
___2.2 셸
___2.3 사용자와 그룹
___2.4 단일 디렉토리 계층구조, 디렉토리, 링크, 파일
___2.5 파일 I/O 모델
___2.6 프로그램
___2.7 프로세스
___2.8 메모리 매핑
___2.9 정적 라이브러리와 공유 라이브러리
___2.10 프로세스 간 통신과 동기화
___2.11 시그널
___2.12 스레드
___2.13 프로세스 그룹과 셸 작업 제어
___2.14 세션, 제어 터미널, 제어 프로세스
___2.15 가상 터미널
___2.16 날짜와 시간
___2.17 클라이언트/서버 아키텍처
___2.18 실시간
___2.19 /proc 파일 시스템
___2.20 정리

3장 시스템 프로그래밍 개념
___3.1 시스템 호출
___3.2 라이브러리 함수
___3.3 표준 C 라이브러리: GNU C 라이브러리(glib)
___3.4 시스템 호출과 라이브러리 함수의 에러 처리
___3.5 이 책의 예제 프로그램
___3.6 이식성 이슈
___3.7 정리
___3.8 연습문제

4장 파일 I/O: 범용 I/O 모델
___4.1 개요
___4.2 I/O의 범용성
___4.3 파일 열기: open()
___4.4 파일 읽기: read()
___4.5 파일에 쓰기: write()
___4.6 파일 닫기: close()
___4.7 파일 오프셋 변경: lseek()
___4.8 범용 I/O 모델 외의 오퍼레이션: ioctl()
___4.9 정리
___4.10 연습문제

5장 파일 I/O: 더 자세히
___5.1 원자성과 경쟁 상태
___5.2 파일 제어 오퍼레이션: fcntl()
___5.3 파일 상태 플래그 열기
___5.4 파일 디스크립터와 열려 있는 파일의 관계
___5.5 파일 디스크립터 복사하기
___5.6 지정된 오프셋에서의 파일 I/O: pread()와 pwrite()
___5.7 스캐터-개더 I/O: readv()와 writev()
___5.8 파일 잘라내기: truncate()와 ftruncate()
___5.9 비블로킹 I/O
___5.10 큰 파일에 대한 I/O
___5.11 /dev/fd 디렉토리
___5.12 임시 파일 만들기
___5.13 정리
___5.14 연습문제

6장 프로세스
___6.1 프로세스와 프로그램
___6.2 프로세스 ID와 부모 프로세스 ID
___6.3 프로세스의 메모리 레이아웃
___6.4 가상 메모리 관리
___6.5 스택과 스택 프레임
___6.6 명령행 인자(argc, argv)
___6.7 환경 변수 목록
___6.8 비지역 goto 수행: setjmp()와 longjmp()
___6.9 정리
___6.10 연습문제

7장 메모리 할당
___7.1 힙에 메모리 할당하기
___7.2 스택에 메모리 할당하기: alloca()
___7.3 정리
___7.4 연습문제

8장 사용자와 그룹
___8.1 패스워드 파일: /etc/passwd
___8.2 섀도 패스워드 파일: /etc/shadow
___8.3 그룹 파일: /etc/group
___8.4 사용자와 그룹 정보 읽기
___8.5 패스워드 암호화와 사용자 인증
___8.6 정리
___8.7 연습문제

9장 프로세스 자격증명
___9.1 실제 사용자 ID와 실제 그룹 ID
___9.2 유효 사용자 ID와 유효 그룹 ID
___9.3 set-user-ID와 set-group-ID 프로그램
___9.4 저장된 Set-User-ID와 저장된 Set-Group-ID
___9.5 파일 시스템 사용자 ID와 파일 시스템 그룹 ID
___9.6 추가 그룹 ID
___9.7 프로세스 자격증명 읽고 수정하기
___9.8 정리
___9.9 연습문제

10장 시간
___10.1 달력 시간
___10.2 시간 변환 함수
___10.3 시간대
___10.4 로케일
___10.5 시스템 클록 갱신하기
___10.6 소프트웨어 클록
___10.7 프로세스 시간
___10.8 정리
___10.9 연습문제

11장 시스템 한도와 옵션
___11.1 시스템 한도
___11.2 실행 시에 시스템 한도(그리고 옵션) 구하기
___11.3 실행 시에 파일 관련 한도(그리고 옵션) 읽기
___11.4 결정되지 않은 한도
___11.5 시스템 옵션
___11.6 정리
___11.7 연습문제

12장 시스템과 프로세스 정보
___12.1 /proc 파일 시스템
___12.2 시스템 식별: uname()
___12.3 정리
___12.4 연습문제

13장 파일 I/O 버퍼링
___13.1 파일 I/O의 커널 버퍼링: 버퍼 캐시
___13.2 stdio 라이브러리 내의 버퍼링
___13.3 파일 I/O의 커널 버퍼링 제어
___13.4 I/O 버퍼링 요약
___13.5 I/O 패턴에 대한 커널 조언
___13.6 버퍼 캐시 우회: 직접 I/O
___13.7 파일 I/O를 위한 라이브러리 함수와 시스템 호출의 혼합
___13.8 정리
___13.9 연습문제

14장 파일 시스템
___14.1 디바이스 특수 파일(디바이스)
___14.2 디스크와 파티션
___14.3 파일 시스템
___14.4 i-노드
___14.5 가상 파일 시스템(VFS)
___14.6 저널링 파일 시스템
___14.7 단일 디렉토리 계층과 마운트 지점
___14.8 파일 시스템의 마운트와 마운트 해제
___14.9 고급 마운트 기능
___14.10 가상 메모리 파일 시스템: tmpfs
___14.11 파일 시스템 정보 획득: statvfs()
___14.12 정리
___14.13 연습문제

15장 파일 속성
___15.1 파일 정보 추출: stat()
___15.2 파일 타임스탬프
___15.3 파일 소유권
___15.4 파일 권한
___15.5 i-노드 플래그(ext2 확장 파일 속성)
___15.6 정리
___15.7 연습문제

16장 확장 속성
___16.1 개요
___16.2 확장 속성 구현 세부사항
___16.3 확장 속성 조작을 위한 시스템 호출
___16.4 정리
___16.5 연습문제

17장 ACL
___17.1 개요
___17.2 ACL 권한 검사 알고리즘
___17.3 ACL의 길고 짧은 텍스트 형식
___17.4 ACL_MASK 엔트리와 ACL 그룹 클래스
___17.5 getfacl과 setfacl 명령
___17.6 기본 ACL과 파일 생성
___17.7 ACL 구현 제항사항
___17.8 ACL API
___17.9 정리
___17.10 연습문제

18장 디렉토리와 링크
___18.1 디렉토리와 (하드) 링크
___18.2 심볼릭(소프트) 링크
___18.3 (하드) 링크 생성과 제거: link()와 unlink()
___18.4 파일이름 변경: rename()
___18.5 심볼릭 링크 관련 작업: symlink()와 readlink()
___18.6 디렉토리 생성과 제거: mkdir()과 rmdir()
___18.7 파일이나 디렉토리 제거: remove()
___18.8 디렉토리 읽기: opendir()과 readdir()
___18.9 파일 트리 검색: nftw()
___18.10 프로세스의 현재 작업 디렉토리
___18.11 디렉토리 파일 식별자 관련 작업 운용
___18.12 프로세스의 루트 디렉토리 변경: chroot()
___18.13 경로명 결정: realpath()
___18.14 경로명 문자열 파싱: dirname()과 basename()
___18.15 정리
___18.16 연습문제

19장 파일 이벤트 감시
___19.1 개요
___19.2 inotify API
___19.3 inotify 이벤트
___19.4 inotify 이벤트 읽기
___19.5 큐 한도와 /proc 파일
___19.6 파일 이벤트 감시의 오래된 시스템: dnotify
___19.7 정리
___19.8 연습문제

20장 시그널: 기본 개념
___20.1 개념과 개요
___20.2 시그널 형식과 기본 동작
___20.3 시그널 속성 변경: signal()
___20.4 시그널 핸들러 소개
___20.5 시그널 전송: kill()
___20.6 프로세스 존재 여부 검사
___20.7 시그널을 보내는 그 밖의 방법: raise()와 killpg()
___20.8 시그널 설명 출력
___20.9 시그널 집합
___20.10 시그널 마스크(시그널 전달 블록)
___20.11 보류 중인 시그널
___20.12 시그널은 큐에 들어가지 않는다
___20.13 시그널 속성 변경: sigaction()
___20.14 시그널 대기: pause()
___20.15 정리
___20.16 연습문제

21장 시그널: 시그널 핸들러
___21.1 시그널 핸들러 설계
___21.2 시그널 핸들러를 종료하는 그 밖의 방법
___21.3 대체 스택의 시그널 처리: sigaltstack()
___21.4 SA_SIGINFO 플래그
___21.5 시스템 호출 인터럽트와 재시작
___21.6 정리
___21.7 연습문제

22장 시그널: 고급 기능
___22.1 코어 덤프 파일
___22.2 전달, 속성, 처리의 특별한 경우
___22.3 인터럽트 가능과 불가능 프로세스 수면 상태
___22.4 하드웨어 생성 시그널
___22.5 동기와 비동기 시그널 생성
___22.6 시그널 전달 시점과 순서
___22.7 signal()의 구현과 이식성
___22.8 실시간 시그널
___22.9 마스크를 이용한 시그널 대기: sigsuspend()
___22.10 동기적 시그널 대기
___22.11 파일 식별자를 통한 시그널 획득
___22.12 시그널을 통한 프로세스 간 통신
___22.13 구형 시그널 API(시스템 V와 BSD)
___22.14 정리
___22.15 연습문제

23장 타이머와 수면
___23.1 시간 간격 타이머
___23.2 타이머 스케줄링과 정확성
___23.3 블로킹 오퍼레이션에 타임아웃 설정
___23.4 일정 시간 동안 실행 중지(수면)
___23.5 POSIX 클록
___23.6 POSIX 시간 간격 타이머
___23.7 파일 식별자를 통해 통지하는 타이머: timerfd API
___23.8 정리
___23.9 연습문제

24장 프로세스 생성
___24.1 fork(), exit(), wait(), execve() 소개
___24.2 새 프로세스의 생성: fork()
___24.3 vfork() 시스템 호출
___24.4 fork() 후의 경쟁 상태
___24.5 시그널 동기를 통한 경쟁 상태 회피
___24.6 정리
___24.7 연습문제

25장 프로세스 종료
___25.1 프로세스 종료하기: _exit()와 exit()
___25.2 프로세스 종료 자세히 들여다보기
___25.3 종료 핸들러
___25.4 fork(), stdio 버퍼, _exit()의 상호작용
___25.5 정리
___25.6 연습문제

26장 자식 프로세스 감시
___26.1 자식 프로세스 기다리기
___26.2 고아와 좀비 프로세스
___26.3 SIGCHLD 시그널
___26.4 정리
___26.5 연습문제

27장 프로그램 실행
___27.1 새 프로그램 실행하기: execve()
___27.2 exec() 라이브러리 함수
___27.3 인터프리터 스크립트
___27.4 파일 디스크립터와 exec()
___27.5 시그널과 exec()
___27.6 셸 명령 실행하기: system()
___27.7 system() 구현하기
___27.8 정리
___27.9 연습문제

28장 더 자세히 살펴보는 프로세스 생성과 프로그램 실행
___28.1 프로세스 어카운팅
___28.2 clone() 시스템 호출
___28.3 프로세스 생성 속도
___28.4 exec()와 fork()가 프로세스 속성에 미치는 영향
___28.5 정리
___28.6 연습문제

29장 프로세스 그룹, 세션, 작업 제어
___29.1 개요
___29.2 프로세스 그룹
___29.3 세션
___29.4 터미널 제어와 프로세스 제어
___29.5 포그라운드와 백그라운드 프로세스 그룹
___29.6 SIGHUP 시그널
___29.7 작업 제어
___29.8 정리
___29.9 연습문제

30장 프로세스 우선순위와 스케줄링
___30.1 프로세스 우선순위(nice 값)
___30.2 실시간 프로세스 스케줄링 개요
___30.3 실시간 프로세스 스케줄링 API
___30.4 CPU 친화도
___30.5 정리
___30.6 연습문제

31장 프로세스 자원
___31.1 프로세스 자원 사용
___31.2 프로세스 자원 한도
___31.3 구체적인 자원 한도 세부사항
___31.4 정리
___31.5 연습문제

32장 데몬
___32.1 개요
___32.2 데몬 생성
___32.3 데몬 작성의 지침서
___32.4 데몬을 다시 초기화하기 위해 SIGHUP 사용
___32.5 syslog를 사용한 메시지와 에러 기록
___32.6 정리
___32.7 연습문제

33장 안전한 특권 프로그램 작성
___33.1 set-user-ID나 set-group-ID 프로그램이 필요한가?
___33.2 최소 특권으로 운영하기
___33.3 프로그램 실행 시 주의사항
___33.4 중요한 정보의 노출 피하기
___33.5 프로세스 제한
___33.6 시그널과 경쟁 상태 인지
___33.7 파일 오퍼레이션과 파일 I/O 실행 시 위험성
___33.8 입력이나 환경을 믿지 말자
___33.9 버퍼 오버런 인지
___33.10 서비스 거부 공격 인지
___33.11 리턴 상태 검사와 안전하게 실패하기
___33.12 정리
___33.13 연습문제

34장 능력
___34.1 능력을 사용하는 이유
___34.2 리눅스 능력 기능
___34.3 프로세스와 파일 능력 기능
___34.4 현대적인 능력 기능 구현
___34.5 exec() 동안 프로세스 능력 기능 변경
___34.6 사용자 ID 변경 프로세스 능력의 효과
___34.7 프로그램적으로 프로세스 능력 변경
___34.8 능력 기능만의 환경 생성
___34.9 프로그램에 요구되는 능력 기능 찾기
___34.10 파일 능력 기능이 없는 이전의 커널과 시스템
___34.11 정리
___34.12 연습문제

35장 로그인 계정
___35.1 utmp와 wtmp 파일의 개요
___35.2 utmpx API
___35.3 utmpx 구조
___35.4 utmp와 wtmp 파일에서 정보 추출
___35.5 로그인 이름 추출: getlogin()
___35.6 로그인 세션을 위한 utmp와 wtmp 파일 갱신
___35.7 lastlog 파일
___35.8 정리
___35.9 연습문제

36장 공유 라이브러리 기초
___36.1 오브젝트 라이브러리
___36.2 정적 라이브러리
___36.3 공유 라이브러리 개요
___36.4 공유 라이브러리 생성과 사용(첫 번째 단계)
___36.5 공유 라이브러리의 유용한 툴
___36.6 공유 라이브러리 버전과 이름 짓기 규칙
___36.7 공유 라이브러리 설치하기
___36.8 호환과 비호환 라이브러리
___36.9 공유 라이브러리 업그레이드하기
___36.10 오브젝트 파일에 라이브러리 검색 디렉토리 경로 지정하기
___36.11 실행 시에 공유 라이브러리 찾기
___36.12 실행 시 심볼 해석
___36.13 공유 라이브러리 대신 정적 라이브러리 사용하기
___36.14 정리
___36.15 연습문제

37장 공유 라이브러리의 고급 기능
___37.1 동적으로 라이브러리 적재하기
___37.2 심볼의 가시성 조절하기
___37.3 링커 버전 스크립트
___37.4 함수의 초기화와 마무리
___37.5 공유 라이브러리 미리 로딩하기
___37.6 동적 링커 감시하기: LD_DEBUG
___37.7 정리
___37.8 연습문제

부록
A 시스템 호출 추적하기
B 명령행 옵션 파싱하기
C NULL 포인터 캐스팅하기
D 커널 설정
E 추가 정보
F 연습문제 해답


[리눅스 API의 모든 것 Vol. 2 고급 리눅스 API 목차]

1장 스레드: 소개
2장 스레드: 스레드 동기화
3장 스레드: 스레드 안전성과 스레드별 저장소
4장 스레드: 스레드 취소
5장 스레드: 기타 세부사항
6장 프로세스 간 통신 개요
7장 파이프와 FIFO
8장 시스템 V IPC 소개
9장 시스템 V 메시지 큐
10장 시스템 V 세마포어
11장 시스템 V 공유 메모리
12장 메모리 매핑
13장 가상 메모리 동작
14장 POSIX IPC 소개
15장 POSIX 메시지 큐
16장 POSIX 세마포어
17장 POSIX 공유 메모리
18장 파일 잠금
19장 소켓: 소개
20장 소켓: 유닉스 도메인
21장 소켓: TCP/IP 네트워크 기초
22장 소켓: 인터넷 도메인
23장 소켓: 서버 설계
24장 소켓: 고급 옵션
25장 터미널
26장 대체 I/O 모델
27장 가상 터미널
부록 A 연습문제 해답

저자소개

마이클 커리스크 (지은이)    정보 더보기
20년 이상 유닉스 시스템을 사용하고 프로그래밍을 했으며, 유닉스 시스템 프로그램을 주제로 한 많은 강의 경험이 있다. 2004년부터 리눅스 커널과 glibc 프로그래밍 API를 설명하는 매뉴얼 페이지 프로젝트를 관리했다. 250개가 넘는 매뉴얼 페이지를 작성했거나 공동 작성했고, 새로운 리눅스 커널/사용자 공간 인터페이스의 테스트와 설계 리뷰에 활발히 참여하고 있다. 마이클은 독일의 뮌헨에서 가족과 함께 살고 있다.
펼치기
김기주 (옮긴이)    정보 더보기
포스텍 컴퓨터공학과와 동 대학원을 졸업한 뒤, 지금은 elastic.co에서 에듀케이션 아키텍트Education Architect로 전 세계에 일래스틱서치(Elasticsearch)를 알리고 있다. 공저로 『SecurityPLUS for UNIX』(영진닷컴, 2000), 역서로 에이콘출판사의 『임베디드 프로그래밍 입문』(2006), 『실시간 UML 제3판』(2008), 『리눅스 API의 모든 것』(2012), 『(개정3판) 리눅스 실전 가이드』(2014), 『한눈에 빠져드는 셸 스크립트 2/e』(2018), 『임베디드 리눅스 프로그래밍 완전정복 2/e』(2019), 『페도라로 실습하는 리눅스 시스템 관리 Vol.1』(2022)가 있다.
펼치기
우정은 (옮긴이)    정보 더보기
인하대학교 컴퓨터공학과를 졸업하고 LG전자, 썬 마이크로시스템즈, 오라클 등에서 모바일 제품 관련 개발을 하다가 현재는 뉴질랜드 웰링턴에 있는 Xero에서 모바일 앱 개발자로 새로운 인생을 즐기고 있다. 2010년 아이폰의 매력에 빠져들면서 번역과 개발을 취미로 삼고 꾸준히 서적을 번역한다. 옮긴 책으로는 『무던한 개발자를 위한 모던한 자바스크립트』, 『디노 첫걸음』, 『플러터 인 액션』, 『처음 배우는 스위프트』, 『실전 자바 소프트웨어 개발』, 『모던 자바 인 액션』(이상 한빛미디어) 등이 있다.
펼치기
황진호 (옮긴이)    정보 더보기
국내에서 학업을 마치고 1년여 동안 미국의 연구 기관에서 방문 연구원으로 재직했다. 한국으로 돌아와 포스코 ICT에서 통신 시스템 소프트웨어 개발자로 3년 동안 근무했다. 그 후 미국의 조지 워싱턴 대학교의 컴퓨터 사이언스 학과에서 박사 과정을 마쳤고, 지금은 미국 뉴욕에 위치한 IBM T.J. 왓슨 리서치 센터(IBM T.J. Watson Research Center)에서 클라우드 컴퓨팅과 빅데이터에 관한 연구를 진행 중이다. 에이콘출판사에서 펴낸 『Concurrent Programming on Windows 한국어판』(2012), 『Creating iOS 5 Apps Develop and Design 한국어판』(2012), 『Programming iOS 5 한국어판』(2012), 『Learning PHP, MySQL & JavaScript With jQuery, CSS & HTML5, 4th Edition』(2016)을 번역했고, 『리눅스 API의 모든 것』(2012)을 공역했다.
펼치기
김영주 (옮긴이)    정보 더보기
건국대학교를 졸업한 뒤 공채 2기로 한글과컴퓨터에 입사해, 한컴고객지원센터장을 역임하고, 한컴오피스, Anti-Virus, 통합보안 등의 마케팅을 담당했다. 지금은 보안 소프트웨어 업체에서 Business Development & Marketing을 하고 있다. 「마이크로소프트웨어」, 「PCPLUS」 같은 컴퓨터월간지에서 필자로 활동했으며, 저서로는 한컴고객지원센터센터 공동 저술한 『따라해보세요, 한글 815 특별판』(한컴프레스, 1998)이 있다.
펼치기
지영민 (옮긴이)    정보 더보기
yangsamy@gmail.com 분당 야탑 영장산 산자락에 자리 잡은 전자부품연구원에서 마늘과 쑥을 먹으며 곰에서 사람으로 환골탈태하여 세상 밖으로 나가기 위해 사물 인터넷 빅데이터 연구에 몰두하면서 인고의 시간을 보내고 있다. 마음은 자유로운 영혼이나 자본주의의 노예에서 벗어나지 못함을 한탄하며, 실현 여부를 가늠할 수 없는 미래의 풍류낭 같은 인생을 꿈꾸며 오늘도 연구에 매진하고 있다. 에이콘 출판사에서 출간한 『리눅스 API의 모든 것』(2012)을 번역했고 데이터 전문가 지식포털(dbguide.net)에서 '사물인터넷: 디지털 오감을 넘어 육감으로...'라는 주제로 칼럼을 연재하고 있다.
펼치기

책속에서

★ 저자 서문 ★

이 책은 리눅스 프로그래밍 인터페이스를 설명한다. 리눅스는 무료로 사용할 수 있는 유닉스 운영체제로서, 리눅스 프로그래밍 인터페이스에는 리눅스가 제공하는 시스템 호출, 라이브러리 함수, 기타 저수준 인터페이스가 포함된다. 리눅스에서 실행되는 모든 프로그램이 이 인터페이스를 직간접적으로 사용한다. 응용프로그램은 이 인터페이스를 사용해 파일 I/O, 파일이나 디렉토리 생성/삭제, 새 프로세스 생성, 프로그램 실행, 타이머 설정, 같은 컴퓨터 안의 프로세스와 스레드 간 통신, 네트워크로 연결된 각기 다른 컴퓨터에 존재하는 프로세스 간의 통신 등을 할 수 있다. 이 저수준 인터페이스를 시스템 프로그래밍(system programming) 인터페이스라고도 한다.

이 책은 주로 리눅스에 초점을 맞췄지만, 표준과 이식성 이슈도 소홀히 다루지 않았고, 리눅스 고유사항에 대한 논의와, 대부분의 유닉스 구현에서 공통적이고 POSIX와 단일 유닉스 명세(Single UNIX Specification)에 의해 표준화된 사항에 대한 논의를 분명히 구별했다. 따라서 이 책은 유닉스/POSIX 프로그래밍 인터페이스도 광범위하게 기술했고, 여타 유닉스 시스템을 대상으로 응용 프로그램을 작성하거나 여러 시스템에 이식할 수 있는 응용프로그램을 작성하려는 프로그래머가 활용할 수 있다.


★ 옮긴이의 말 ★

리눅스가 지배하는 세상이 됐다. 최소한, 리눅스가 도처에서 쓰이는 세상이 되었다. 데스크탑을 정복하지는 못했지만 데스크탑보다 훨씬 많은 곳에서 리눅스가 쓰인다. 보이지 않는 곳에서 인터넷을 움직이는 서버와, 매일 들고 다니는 핸드폰과 태블릿, 자동차마다 달려 있는 내비게이션과 블랙박스, 아침에 일어나자마자, 그리고 퇴근해서 집에 오면 무심코 켜는 TV, 셋톱박스, 블루레이 플레이어, 냉장고, 인터넷 공유기, 프린터, 가정용 파일 서버 등이 리눅스로 구동된다.

『리눅스 API의 모든 것』은 리눅스에서 프로그램을 작성할 때 사용하는 시스템 호출과 라이브러리 함수를 설명한 책이다. 서버에서 동작하는 리눅스용 프로그램을 작성하는 사람들에게 좋은 참고서가 될 것이고, 역자처럼 임베디드 시스템용 프로그램을 작성하는 사람들의 경우, 임베디드 리눅스에서는 서버에서 제공되는 모든 기능을 사용할 수는 없겠지만, 많은 부분이 겹칠 것이고 활용할 수 있으리라 믿는다.

채원석 님의 제안대로 구글 닥스를 사용해 용어집을 공유하고, 번역 뒤 리뷰를 해서 문체를 다듬기는 했지만 여러 역자가 함께 작업하다 보니 문체라든지 용어 등이 약간씩 차이가 날 수 있는 점 양해 부탁드린다. 엄청난 두께의 책을 저술하고, 역자의 질문에 바로 답해준 저자의 열정에 경의를 표한다.

원서의 양이 매우 방대하고 번역 과정에서 두께가 더 두꺼워지는 바람에 저자와의 협의 끝에 두 권으로 나누어 출간하게 되었다. 1권은 기초 리눅스 API 편으로, 리눅스 프로그래밍에서 흔히 쓰이는 파일, 메모리, 사용자, 프로세스, 시간, 시그널, 타이머, 라이브러리 사용법과 작성법 등을 설명하고, 2권은 고급 리눅스 API 편으로, 좀더 세련되고 복잡한 리눅스 프로그램을 만들 때 사용되는 스레드, IPC, 소켓, 고급 I/O 등을 설명한다.

이 책은 예제가 많아 리눅스 프로그래밍을 배우고자 하는 사람들도 쉽게 따라 하면서 배울 수 있으리라 생각한다. 숙련된 프로그래머의 경우에는 인덱스를 활용해 참고서로 사용할 수 있을 것이다. 비록 두 권으로 나뉘었지만, 인덱스에는 1권과 2권에 나오는 모든 용어를 담고, 각 용어가 어느 권에 나오는지 명시했으므로, 용어를 찾는 데 어려움이 없으리라 믿는다.

리눅스는 항상 개발 중이며, 최근에는 커널 3.3이 발표되었다. 책이 출판된 뒤에 바뀐 내용에 대해서도 저자가 자신의 사이트에서 정오표(지은이의 말 참조)를 통해 안내하고 있으므로, 참고하면 도움이 될 것이다.

- 대표 역자 김기주


추천도서

이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책