内容紹介
C言語によるUNIXシステムプログラミングの入門書!
本書は、UNIX初心者を対象に、ファイル、プロセスおよびネットワークを使ったプロセス間通信の概念と仕組み、そして、それらの機能を利用できるようにするために、UNIXがプログラムインタフェースとして提供しているシステムコールの使い方について解説します。UNIXの機能全般を網羅的に扱うことにより、初心者にとって一通りUNIXに触れることができるようにするとともに、難易度の高い内容も豊富で有用なサンプルプログラムを使って平易に説明します。
このような方におすすめ
UNIXの初心者。C言語の基礎的なプログラミングおよびUNIXの基本的なコマンドについての知識を前提とします。
情報系専門学校・大学の学生、システムエンジニア向け。
目次
主要目次
■第Ⅰ部 UNIXでプログラムを作ってみよう
1章 UNIXにおけるプログラミング環境
2章 コマンド作成方法
■第Ⅱ部 UNIXの内部を覗いてみよう
3章 システムコールの仕組みと働き
4章 ファイル
5章 プロセス
6章 プロセス間通信
■第Ⅲ部 システムコールを使ってみよう
7章 ファイルの入出力
8章 端末入出力
9章 プロセスの生成と実行
10章 シグナル処理
11章 パイプを使ったプロセス間通信
12章 ソケットを使ったプロセス間通信
13章 まとめ
付録
詳細目次
■第Ⅰ部 UNIXでプログラムを作ってみよう
1章 UNIXにおけるプログラミング環境
1.1 GUIとCLI
1.1.1 GUIとは
1.1.2 CLIとは
1.1.3 GUIとCLIを比較すると
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メッセージ作成のルール
この章のポイント
■第Ⅱ部 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 ソケットの基本的な使用方法
この章のポイント
■第Ⅲ部 システムコールを使ってみよう
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法則
続きを見る