Giter VIP home page Giter VIP logo

linux_for_everyone's Introduction

모두를 위한 리눅스 프로그래밍

모두를 위한 리눅스 프로그래밍

출판사 제이펍
원서명 ふつうのLinuxプログラミング(第2版)
(원서 ISBN: 9784797386479)
저자명 아오키 미네로
역자명 이동규
출판일 2018년 11월 21일
페이지 416쪽
ISBN 979-11-88621-40-8(93000)

### 도서 소개 페이지 바로 가기 ###

원서(일본어) 지원 페이지

http://i.loveruby.net/stdlinux2/

필요 환경

프로그램을 빌드하기 위해서는 Linux와 gcc, GNU make가 필요하다. 다음 환경에서 동작을 확인했다.

  • Ubuntu Linux Desktop 16.04 LTS
  • CentOS 7.3

빌드 방법

이 디렉토리 내에서 make 명령어로 프로그램을 빌드할 수 있다. 또한, make text로 테스트할 수 있다.

라이센스

이 디렉토리 내의 소스 코드는 전부 원저자(아오키 미네로)에게 저작권이 있으며, MIT라이센스를 따른다. 즉, 아무런 제한 없이 변경, 재배포, 재사용이 가능하다. 그러나 이 소스 코드를 활용함으로써 발생하는 문제에 대해서는 저자 및 출판사는 책임지지 않는다.

아오키 미네로(青木峰郎) / Minero Aoki

소스 코드 목록

1장

hello.c
Hello, World!
args.c
실행 인자를 표시하는 프로그램.
segv.c
NULL 포인터를 참조하는 프로그램. 확실히 segmentation fault가 발생함.
echo.c
간단한 echo 명령어.

4장

bell.c
단말에 벨을 울리는 프로그램.

5장

cat.c
간단한 cat 프로그램(시스템 콜 사용 구현).
cat0.c
cat.c에서 에러 처리를 제거한 코드.
cat3.c
문제 5-1의 해답. 실행 인자가 없을 때 stdin에서 읽는 cat 명령어.
wc-l-syscall.c
문제 5-2의 해답. 표준 입력에서 텍스트를 읽어, 그 줄 수를 표시.

6장

cat2.c
stdio을 사용하여 구현한 cat 명령어.
getcperf.c
fgetc와 getc의 속도를 비교하기 위한 코드. 인자를 지정하지 않으면, getc를 쓰고, 인자로 f를 지정하면 fgetc를 사용한다.
feof-bug.c
feof를 사용할 때 발생하는 유명한 버그를 확인하는 코드. 이 프로그램에 표준 입력으로 텍스트 파일을 리다이렉트하면 마지막 줄이 두 번 표시된다.
cat-escape.c
문제 6-1의 해답. 탭을 \t, 개행을 $+ 개행으로 표시하는 cat 명령어.
wc-l-stdio.c
문제 6-2의 해답. 표준 입력에서 텍스트를 읽어, 그 줄 수를 표시.
cat5.c
문제 6-3의 해답. fread와 fwrite를 사용한 cat 명령어.

7장

head.c
간단한 head 명령어. stdin만을 읽는다.
head2.c
간단한 head 명령어. 실행 인자로 지정한 파일도 읽는다.
head3.c
간단한 head 명령어. getopt로 실행 인자를 옵션으로 파싱하는 예
head4.c
간단한 head 명령어. getopt_long을 사용하여 실행 인자를 옵션으로 파싱하는 예.
gdb/*
gdb 테스트를 위해 사용한 파일.
cat4.c
문제 7-1의 해답. -e 옵션으로 cat-escape.c와 같은 효과를 내는 cat 명령어.
tail.c
문제 7-2의 해답. 간단한 tail 명령어(출력 줄 수 고정).

8장

grep.c
8장에서 작성한 grep 명령어.
array.c
문자열과 문자의 배열이 같은 것을 확인하는 코드.
wgrep.c
wchar을 사용하여 멀티 바이트 문자를 지원하는 grep 명령어. 고정 문자열만 검색할 수 있다.
grep2.c
문제 8-1의 해답. -i 옵션과 -v 옵션이 붙은 grep 명령어.
slice.c
문제 8-2의 해답. 패턴에 일치하는 부분만 출력한다.

10장

ls.c
간단한 ls 명령어.
catdir.c
opendir를 사용하지 않고 디렉터리를 읽는 명령어. ./catdir . | strings와 같이 실행하면 ls와 비슷하게 표시함.
mkdir.c
간단한 mkdir 명령어. mkdir(2) 사용 예.
rmdir.c
간단한 rmdir 명령어. rmdir(2) 사용 예.
ln.c
간단한 ln 명령어. link(2) 사용 예.
symlink.c
간단한 ln -s 명령어. symlink(2) 사용 예.
rm.c
간단한 rm 명령어. unlink(2) 사용 예.
mv.c
간단한 mv 명령어. rename(2) 사용 예.
stat.c
실행 인자로 지정한 파일의 메타 정보를 출력. lstat(2) 사용 예.
touch.c
간단한 touch 명령어. utime(2) 사용 예. 이 명령어는 시간을 갱신할 뿐, 파일을 만드는 기능은 없음.
chmod.c
간단한 chmod 명령어. chmod(2) 사용 예.
chown.c
간단한 chown 명령어. chown(2)와 getpwnam(3) 사용 예.
chgrp.c
간단한 chgrp 명령어. chgrp(2) 사용 예.
traverse.c
문제 10-1의 해답. 실행 인자로 지정한 디렉토리를 traverse하면서, 안에 있는 파일을 출력.
mkpath.c
문제 10-3의 해답. 디렉토리 트리를 재귀적으로 작성.

11장

mapwrite.c
mmap(2) 테스트 프로그램.
shlib/*
공유 라이브러리를 작성하는 예(리눅스 only).
link/*
라이브러리의 다이나믹 링크와 다이나믹 로드의 예(리눅스 only).
tail.c
문제 11-1의 해답. 간단한 tail 명령어(출력 줄수를 실행 인자로 지정 가능).

12장

exec.c
exec 테스트 코드.
spawn.c
실행 인자로 전달된 명령어를 실행.
dupread.c
dup(2) 테스트 프로그램.
sh1.c
문제 12-2의 해답. 간단한 셸.
sh2.c
문제 12-3의 해답. 파이프와 리다이렉트 기능을 구현한 셸.

13장

sig.c
signal(2) 테스트 프로그램. SIGINT만 지원.
sigqueue-test.c
시그널이 큐잉되는지 테스트하는 프로그램. 리눅스에서는 프로그램이 기동된 후 재빨리 Ctrl+C를 다섯 번 입력해도(즉, 시그널을 다섯 번 전송해도), 메시지는 두 번만 표시된다. 나머지 메시지는 분실된 것이다.
isatty.c
stdin, stdout, stderr에 대해 단말인지 여부 판정.
trap.c
문제 13-1 의 해답. SIGINT(Ctrl+C로 인한 인터럽트)를 받으면 메시지를 출력.

14장

pwd.c
간단한 pwd 명령어. 버퍼의 크기는 정수 사용.
pwd2.c
간단한 pwd 명령어. 스스로 버퍼의 길이를 조절.
pwd3.c
간단한 pwd 명령어. GNU libc의 getcwd() 기능 사용(리눅스 Only).
showenv.c
getenv(3) 테스트 프로그램. 실행 인자로 지정된 환경 변수의 값을 표시. env.c도 참고할 것.
env.c
간단한 env 명령어. 모든 환경 변수를 표시.
user.c
실행 인자로 지정된 사용자의 사용자 ID를 표시. getpwnam(3) 사용 예.
id.c
간단한 id 명령어. user.c도 참고할 것.
timefmt.c
시간 API 테스트 프로그램.
strftime.c
strftime(3) 테스트 프로그램.
ls2.c
문제 14-3의 해답. 간단한 ls 명령어. 파일 소유자와 최종 변경 시간을 표시.

15장

daytime.c
daytime 클라이언트.
daytimed.c
daytime 서버. 책에 기술한 이유로 IPv4 전용.

16장

httpd.c
16장에서 만든 HTTP 서버. stdin에서만 요청을 읽어 들인다.

17장

httpd2.c
이번 장에서 작성한 HTTP 서버. 데몬화 기능과 소켓 접속 기능 추가.
logging.c
syslog(3) 테스트 프로그램.

18장

make/*
make와 Makefile의 예.

linux_for_everyone's People

Contributors

jpub avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.