あらすじ
※この商品はタブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字だけを拡大することや、文字列のハイライト、検索、辞書の参照、引用などの機能が使用できません。
※この電子書籍は紙版書籍のページデザインで制作した固定レイアウトです。
UNIX/Linuxシステムプログラミングをはじめよう
本書は、2007年にピアソン・エデュケーションから発行された『例解UNIXプログラミング教室 ―システムコールを使いこなすための12講―』の改訂版です。
本書は、UNIX/Linuxの機能を使ったC言語プログラミングを解説するものです。UNIXは、ファイルの操作やプロセスの制御、プロセスへのシグナル、ネットワーク通信、端末の操作など、多くの高度な機能を持っています。しかし、システムコールによって、このような機能を利用したプログラムを正しく動作するようつくるためには、UNIXの隠れた概念や制約について知っている必要があり、それらを網羅的に覚えるのは困難です。
本書は、この概念や制約が、それぞれのシステムコールの動作に及ぼす影響を全部覚えるといったアプローチはとっていません。むしろ、必要なときに必要なシステムコールが分かり、それをどう使えばよいのか、そして、その機能には当然どのような制限があるのかが分かるようになるように、UNIXの基本概念とプログラマから見えるUNIXの概観をつかめるよう解説しました。
本書は単なるインタフェースの解説書ではありません。インタフェースの説明をしつつ、 UNIXの概観(エッセンス)を読者に理解してもらうことで、できるだけ楽に、しかも確かなUNIXシステムプログラミングができるようになってもらうことを目指しました。また、豊富なサンプルコードと演習問題を掲載し、実践的なプログラミングの助けとなるようにしています。
<おもな改訂内容>
・第0章 UNIXの基礎とシェルの新設:UNIXシステムプログラミングを学ぶ準備として、UNIX にまだ慣れていない読者のために、UNIXとはどのようなものか、どのように操作するかを説明する第0章を新設しました。
・用語の見直し:旧版では提案も含めて読者にわかりやすい用語を目指していましたが、この新版では、わかりやすさを保ちつつ、広く使われている語を用いるようにしました。
UNIX自体がすでに成熟しているため、システムプログラミングの部分については小規模な改善を行いました。
なお、すべてのコードは以下のサイトからダウンロードできます。
https://github.com/kazutomi/reikai-unix-code-samples
第0章 UNIXの基礎とシェル
第1章 Cの復習(1):マニュアルの読み方、エラー処理、構造体、共用体
第2章 Cの復習(2):ポインタ、バイトオーダ、複雑な型
第3章 低水準入出力
第4章 標準入出力ライブラリ
第5章 プロセス
第6章 ファイルシステム
第7章 ファイル記述子のコピーとパイプ:dup、dup2、pipe
第8章 ソケット通信入門
第9章 シグナルと競合状態
第10章 端末(1) :端末、端末ラインディシプリン、termios構造体
第11章 端末(2) :エスケープシーケンス、cursesライブラリ、擬似端末
第12章 非局所脱出:setjmp、longjmp
参考文献
用語集
索引
感情タグBEST3
Posted by ブクログ
Linuxの本質を理解する上で、システムコールの習得は避けては通れないのであろう。本書を手に取った瞬間に感じたのは、上原隆平著『はじめてのアルゴリズム』にも通じる、あの硬派で難解そうな空気感だ。しかし、個人的には「分かりやすさ」を過度に強調した本よりも、こうした知的な重厚さを漂わせる一冊にこそ、強く惹かれるものがある。安易な近道など存在せず、地道にコードを書き、実践を積み重ねる学習姿勢がよいのだろう。
興味深かったのは、プログラミング言語に対する著者の視点、そして自分自身の再発見だ。例えばPHPは、初学者が「動かす」喜びを知るには最適だが、プログラミングの本質を深く掘り下げるという点では、どこか物足りなさを感じてしまう。一方でC言語は、実装の困難さはあるのだろうが、私としては魅力を感じる。また、スパゲッティコードの語源がgoto文の乱用にあるという事を本書を読んで知った。
正直に言えば、現在の自分のレベルで本書のすべてを咀嚼し、その真の価値を語るにはまだ力不足を感じる。UNIXを直接扱う予定も今のところはないが、
本書を読み解くことは、自分のコンピュータに対する理解力を試されたいるようにも思う。