『C言語によるUNIXシステムプログラミング入門』を読みはじめた

f:id:ikedakenno:20170701013611j:plain

近くの古本屋で全品50%OFFキャンペーンをやってて、¥400で買えてしまった。
2003年の第1版。C言語やらUNIXやらの入門なので、古すぎてということもない。
まだ最初の2章くらいまでだけど、おもしろい。

Webアプリの開発してて、コマンド…システムコールシェルスクリプト……改めてちゃんと勉強しなきゃな……と感じてたところがまさに解決されていく感じ。「あーそういうことだったのー!」がいっぱいあって、とっかかりとして大変良いです。

そもそもC言語のプログラムって、ソース書いて実行されるまでこんな処理の流れだったのねとか、シェルや環境変数ってそういうことだったのとか、コマンドってこんな感じでオプションの処理してんだ、とか。

目次を見ると今後ファイル/プロセス/シグナル/ソケットの辺り出てくるので、読み進めるのが楽しみ。ZEHI!

■第I部 UNIXでプログラムを作ってみよう
1章	UNIXにおけるプログラミング環境
1.1	GUICLI
1.1.1	GUIとは
1.1.2	CLIとは
1.1.3	GUICLIを比較すると
1.2	C言語プログラミング
1.2.1	コンパイラインタプリタ
1.2.2	Cコンパイラの使い方
1.2.3	Cコンパイラの処理の流れ
1.3	シェルとスクリプト言語
1.3.1	シェルの種類と機能
1.3.2	シェルの環境設定
1.3.3	スクリプト言語
1.4	UNIXの基本的なコマンド
1.4.1	ソフトウェア開発用コマンド
1.4.2	UNIX初心者が知っておくべき基本的なコマンド
この章のポイント

2章	コマンド作成方法
2.1	コマンド行パラメータの処理
2.2	環境変数の処理
2.2.1	環境変数の獲得と設定
2.2.2	代表的な環境変数
2.3	オプションの処理
2.3.1	オプションの指定方法
2.3.2	オプションの処理方法
2.4	Usageメッセージ
2.4.1	Usageメッセージの出力方法
2.4.2	Usageメッセージの出力を行う場面
2.4.3	Usageメッセージ作成のルール
この章のポイント

■第II部 UNIXの内部を覗いてみよう
3章	システムコールの仕組みと働き
3.1	システムコールの働き
3.1.1	printf()は何を呼ぶ? -ライブラリ関数の行き着くところ
3.1.2	write()は何を呼ぶ? -カーネルとのホットライン
3.2	システムコールの仕組み
3.3	システムコールの種類と機能
3.4	システムコールのエラーメッセージ
この章のポイント

4章	ファイル
4.1	ファイルの種類と木構造
4.1.1	ファイル名とパス名
4.1.2	ファイルの保護
4.2	ファイルシステムの構造
4.2.1	ディスクパーティション
4.2.2	ファイルシステム
4.2.3	ディレクトリファイル
4.2.4	デバイスファイル
4.2.5	マウントとアンマウント
4.3	デバイススイッチ
4.3.1	デバイス番号
4.3.2	デバイスドライバ
4.3.3	デバイススイッチ機構
4.4	標準入出力
4.4.1	標準入出力の切り替え
4.4.2	フィルタ
4.5	ファイル記述子とファイルポインタ
4.5.1	利用者ファイル記述子表
4.5.2	ファイル記述子
4.5.3	ファイルポインタ
4.6	端末制御
この章のポイント

5章	プロセス
5.1	プログラムとプロセス
5.1.1	プログラム
5.1.2	プロセス
5.2	プロセスの木構造
5.3	プロセスの状態
5.4	プロセスの管理
5.4.1	プロセスIDとプロセスグループID
5.4.2	プロセス優先度
5.4.3	ユーザID
5.4.4	グループID
5.5	シグナル
この章のポイント

6章	プロセス間通信
6.1	パイプを使ったプロセス間通信
6.1.1	単方向パイプ
6.1.2	双方向パイプ
6.2	ソケットを使ったプロセス間通信
6.2.1	ソケットとバインド
6.2.2	ドメイン
6.2.3	バーチャルサーキットとデータグラム
6.2.4	クライアントサーバシステム
6.2.5	ソケットの基本的な使用方法
この章のポイント

■第III部 システムコールを使ってみよう
7章	ファイルの入出力
7.1	ファイル入出力
7.2	ファイルに対する操作
この章のポイント

8章	端末入出力
8.1	属性情報の獲得
8.2	属性情報の設定
この章のポイント

9章	プロセスの生成と実行
9.1	プロセスの実行
9.2	プロセスの生成
9.3	プロセス管理情報の獲得と設定
9.3.1	プロセス管理情報の獲得
9.3.2	プロセス管理情報の設定
9.3.3	プロセスの制御
この章のポイント

10章	シグナル処理
10.1	シグナル捕獲時の処理
10.2	タイマー処理
10.3	プロセス間でのシグナル送受信
この章のポイント

11章	パイプを使ったプロセス間通信
11.1	単方向パイプ
11.2	双方向パイプ
11.3	標準入出力とパイプ
この章のポイント

12章	ソケットを使ったプロセス間通信
12.1	ソケット関連のシステムコール
12.1.1	ソケットの作成と名前づけ
12.1.2	接続要求の発信
12.1.3	INETドメインにおけるソケットアドレス情報の与え方
12.1.4	接続要求の受け入れ準備を許可
12.1.5	ストリームソケットを用いた場合のデータ送受信
12.1.6	データグラムソケットを用いた場合のデータ送受信
12.2	ネットワークライブラリ
12.2.1	バイトオーダ変換にかかわるライブラリ関数
12.2.2	IPアドレス操作にかかわるライブラリ関数
12.2.3	バイト列操作にかかわるライブラリ関数
12.2.4	ネットワーク設定ファイルを参照するライブラリ関数
12.3	ストリームソケットを用いたプロセス間通信
12.3.1	UNIXドメイン
12.3.2	INETドメイン
12.3.3	反復サーバ
12.3.4	並行サーバ
12.3.5	非同期通信
12.4	データグラムソケットを用いたプロセス間通信
12.4.1	INETドメインにおける同期通信
12.4.2	ブロードキャスト
この章のポイント

13章	まとめ
13.1	その他のシステムコール
13.2	有用なライブラリ関数
13.3	続・海と山と空と雲と

付録

コラム目次
1章 UNIXにおけるプログラミングの心得
2章 環境変数とシェル変数
6章 ネットワークプロトコル
7章 ぬる、ヌル、NULL!?
9章 産めよ増やせで地に満てた
10章 亡霊プロセスの大往生
11章 バイトオーダ(big-endianとlittle-endian)
12章 UNIXとインターネット
13章 80-20法則

http://shop.ohmsha.co.jp/shopdetail/000000001652/

オーム社さんのページから引用。

 

C言語によるUNIXシステムプログラミング入門

C言語によるUNIXシステムプログラミング入門