Linuxシステムプログラミング

[cover photo]
  • 2008年04月 発行
  • 396ページ
  • ISBN978-4-87311-362-3
  • フォーマット Print PDF
  • 原書: Linux System Programming

オライリー・ジャパンで書籍を購入:
定価3,888円

Ebook Storeで電子版を購入:
価格3,110円

本書には、Linuxの概要、カーネル、Cライブラリ、Cコンパイラなどプログラミングの基礎知識から、ファイルI/O、バッファサイズ管理、メモリマッピング、最適化技術、システムコール、メモリ管理まで、プログラマの観点から実践的なトピックが多く盛り込まれています。Linuxカーネル動作についても、その内部実装よりもプログラマがソースコードを書くために必須の知識が凝縮されています。実践的なプログラミング能力の習得に役立つ一冊です。カーネル2.6対応。

関連書籍

Linuxカーネル クイックリファレンス
Linuxデバイスドライバ 第3版
詳解 Linuxカーネル 第3版

まえがき

1章 概要および主要概念
	1.1 システムプログラミング
	1.2 APIとABI
	1.3 標準仕様
	1.4 Linuxプログラミングの概念
	1.5 システムプログラミングへ出発

2章 ファイルI/O
	2.1 ファイルのオープン
	2.2 ファイル読み取り: read()
	2.3 ファイル書き込み: write()
	2.4 同期I/O
	2.5 ダイレクトI/O
	2.6 ファイルクローズ
	2.7 ファイルシーク:lseek()
	2.8 ファイルポジション指定I/O
	2.9 ファイルトランケート
	2.10 I/Oの多重化
	2.11 カーネル内の動作
	2.12 章の結び

3章 I/Oのバッファリング
	3.1 ユーザ空間のI/Oバッファリング
	3.2 標準I/O
	3.3 ストリームのオープン
	3.4 ファイルディスクリプタを介したストリームオープン
	3.5 ストリームのクローズ
	3.6 ストリームの読み取り
	3.7 ストリームの書き込み
	3.8 サンプルコード:ユーザ空間のバッファリング
	3.9 ストリームのシーク
	3.10 ストリームのフラッシュ
	3.11 エラーとEOF
	3.12 ストリームとファイルディスクリプタ
	3.13 バッファリングの制御
	3.14 スレッドセーフ
	3.15 標準I/Oライブラリに対する批判
	3.16 章の結び

4章 高度なファイルI/O
	4.1 scatter-gather I/O
	4.2 Event Pollインタフェース
	4.3 ファイルをメモリへマッピングする
	4.4 ファイルI/Oのヒント/アドバイスを与える
	4.5 2種類の同期/非同期
	4.6 I/OスケジューラとI/O パフォーマンス
	4.7 章の結び

5章 プロセス管理
	5.1 プロセスID
	5.2 新規プロセスの起動
	5.3 プロセスの終了
	5.4 子プロセスの終了を待つ
	5.5 ユーザとグループ
	5.6 セッションとプロセスグループ
	5.7 デーモン
	5.8 章の結び

6章 高度なプロセス管理
	6.1 プロセススケジューリング
	6.2 プロセッサを自発的に手離す
	6.3 プロセスの優先度
	6.4 プロセッサアフィニティ
	6.5 リアルタイムシステム
	6.6 リソースリミット

7章 ファイル、ディレクトリの管理
	7.1 ファイルとメタデータ
	7.2 ディレクトリ
	7.3 ファイルのリンク
	7.4 ファイルのコピーと移動
	7.5 デバイスノード
	7.6 ioctl()
	7.7 ファイルイベントの監視

8章 メモリ管理
	8.1 プロセスアドレス空間
	8.2 動的メモリの割り当て
	8.3 データセグメントの管理
	8.4 無名メモリマッピング
	8.5 高度なメモリ割り当て
	8.6 メモリ割り当てのデバッグ
	8.7 スタック上のメモリ割り当て
	8.8 メモリ割り当て方法の選択
	8.9 メモリ操作
	8.10 メモリのロック
	8.11 メモリの遅延割り当て

9章 シグナル
	9.1 シグナルの概念
	9.2 シグナル処理の基礎
	9.3 シグナルの送信
	9.4 リエントラント
	9.5 シグナルセット
	9.6 シグナルのブロック
	9.7 高度なシグナル処理
	9.8 シグナルとともにデータを送信する
	9.9 章の結び

10章 時 間
	10.1 時刻を表現する構造体
	10.2 POSIXクロック
	10.3 現在時刻の参照
	10.4 現在時刻の設定
	10.5 さまざまな時間表現
	10.6 システムの時計を合わせる
	10.7 スリープ
	10.8 タイマ

付録 C言語のGCC拡張
	A.1 GNU C
	A.2 インライン関数
	A.3 インライン展開の抑制
	A.4 ピュア関数
	A.5 コンスタント関数
	A.6 リターンしない関数
	A.7 メモリを割り当てる関数
	A.8 戻り値の確認が必要な関数
	A.9 使用されたくない関数
	A.10 コールしていないが使用している関数
	A.11 使用していない関数またはパラメータ
	A.12 構造体のパッキング
	A.13 変数のアラインメント指定
	A.14 グローバル変数のレジスタ指定
	A.15 分岐ヒント
	A.16 式の型を得る
	A.17 型のアラインメントを得る
	A.18 構造体内のメンバオフセット
	A.19 関数のリターンアドレスを得る
	A.20 範囲指定のswitch-case
	A.21 voidポインタ、関数ポインタに対する演算
	A.22 移植性と可読性を同時に確保する

参考文献
索 引

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

1、2刷正誤表

Linuxシステムプログラミング 第1、第2刷正誤表

2010年2月3日更新

位置
p209
1番目の
コード
14行目
ret = chmod ("manifest.txt", -1, gr->gr_gid); ret = chown ("manifest.txt", -1, gr->gr_gid);
p309
2行目
SA_NOCLDWAIT SA_NOMASK
p325
第2段落
2行目
timezone構造体およびパラメータtz現在では timezone構造体およびパラメータtz現在では
p326
10.3.3
1行目
times()システムコールは times()システムコールは

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]