読書2007年7月頃に購入していて、ず~っと本棚に眠っていたのを、ようやく読み終えることが出来ました。amazon.comの方でレビューを見てみると、全て高評価レビューとなっています(星4~5つ)。以下、自分自身が読んだ感想を、三行で乱暴にまとめてみます。実務でUNIXプログラミングをする時に考慮すべき要点を網羅してくれている。移植性を考慮したり、標準(POSIXやSUS)周辺の地雷を回避したい時に必携。読者のほうで読み方を工夫する必要がある本。一点目、実務でUNIXプログラミングをする上で突き当たる問題について、随所で言及・考察が加えられています。以下の三つが特に重点的に取り上げられています。IPC・マルチスレッドいずれも実際のUNIXプログラミングでは避けて通れない問題です。本書では、かなりしつこくこれらの問題について突っ込んでいます。突っ込みすぎて読者によっては置いてけぼりになるかもしれませんが、経験者であればあるほど、「あー、この問題かー、自分もやったなー。」と相槌を打って楽しめることでしょう。移植性や標準についてですが、非常に注意して書かれています。Linux/FreeBSD/Darwinの4プラットフォームで動作確認しており、どのプラットフォームがどの規格をサポートしているのか丁寧に書かれています。サポート状況の説明が各システムコール毎の解説に分散してしまっているため、一覧性は良くないかもしれません。文章を隅々まで読み込む必要があります。逆に、実務上特定のプラットフォームしか触らないよ、という人には本書の記述は重過ぎるかもしれません。特定のプラットフォームしか触らないにせよ、移植性を考慮するにせよ、本書の重要性は変わりません。SUSv3では1,108の関数が規定されていますが、本書ではその中から、UNIXシステムプログラミングに関連しないCライブラリ関数・古くて利用が推奨されていないもの・logやトランザクションなどUNIXシステムプログラミングに必須とはいえないものなどを除去した、厳選に厳選を重ねた307の関数をとりあげています。本書で取り上げられている関数は、「これからの」UNIXシステムプログラミングで安心して・安定して使える関数だということです。実際、古いsignal()やBSDスタイルのflock()などはバッサリと切り捨てられ、代わりにsigaction()やlockf()/fcntl()によるロックが解説されています。パス名やファイル記述子、IPCリソースなどの各種「上限値」の取得方法についても随所でsysconf()やpathconf()を使って紹介されているので、そうした情報を調べたいときにも役立ちます。最後に読み方を工夫する必要がある点です。いうのは、文章の内容が濃く、サンプルコードも初心者向きのレベルではないからです。個人的な意見ですが、本書は「サンプルコードを自分で打ち込んで、動かして、実験して学ぶ本」ではありません。「実務上、あるカテゴリのシステムコールを特に詳しく調査する必要が生じたときに、参考資料としてアイデアを頂戴する本」だと思います。よって読者レベルにかかわらず、生真面目に文章の隅々まで、そしてサンプルコードを自分で打ち込んで読破する読み方はおすすめできません。途中で精根尽き果ててしまうのではないでしょうか。他の入門書を一冊読み終えた位のビギナーであれば、サンプルコードはもとより解説の大半も読み飛ばして結構だと思います。システムコールの網羅性は高いので、UNIXシステムプログラミングの世界地図として俯瞰して眺める程度でも罰は当たらないでしょう。実務で実際にUNIXシステムプログラミングを経験したレベルの人であれば、ざっくりと斜め読みで通読程度でも問題ないでしょう。同期とか再突入問題とかマルチスレッド+シグナル+fork-execの最凶タッグ問題、AUPのどこそこに書いてあったな~」と思い出して、その時に詳しい解説やサンプルコードまで読み込む、というスタイルで良いと思います。最後に、自分の読書時のメモを残しておきます。マクロマルチスレッド+シグナル+fork-execの最凶タッグについてサンプルコードとサポートサイト本書のサポートサイトは以下のURLになります。Downloadhttp://basepath.com/aup/download.htmサンプルコードはそのままではコンパイルできません。サイト上で公開されているawkスクリプトを別途DLし、環境変数を整えた上でMakefileを生成する必要があります。詳しくは以下のURLを参照してください。Exampleshttp://basepath.com/aup/compile.htmawkスクリプトを別途ダウンロードする、というのを知らずに、小一時間ほど「なんでMakefileが間違ってるんだろう~?」と悩みました。本書があくまでも"Advanced"であり、ビギナーなど眼中に無いことを思い知らされました。すればOKにしています。いうスクリプト使いました。popddone読書メモさまざま読んでいて「へ~~へ~~、メモっとこう」と思った箇所をいくつか書き留めておきます。Chapter5あたりからその気力すら失われました。マジで、隅々まで読み込むのはエネルギー吸い取られます。だめなの?→O_RDONLYは0で実装されてるから。