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

3,960円
Ebook Storeで電子版を購入:
価格3,960円
カートに入れる

内容

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

関連書籍

目次

まえがき

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 移植性と可読性を同時に確保する

参考文献
索 引

正誤表