Linux システムコール
2000年6月27日紙版発売
塚越一雄 著
A5判/336ページ
定価2,728円(本体2,480円+税10%)
ISBN 4-7741-1031-0
ただいま弊社在庫はございません。
書籍の概要
この本の概要
Linuxのシステムコールは,Cのプログラミングに必要なだけではなく,LinuxおよびUNIXに対しての理解を深める必須の知識ともいえます。本書はLinux/UNIXを学ぶ際のシステムコールの理解において,敷居をできる限り低くすることを意図しています。
こんな方におすすめ
- Linuxを仕事で使う方
- LinuxでCプログラミングする方
目次
第1章 システムコール
- 1 処理時間を計る
- 2 システムコール
- 2・1 システムコールと一般関数
- 2・2 協定世界時
- 2・3 localtime
- 2・4 struct tm
- 2・5 asctime
- 2・6 ローカル時刻の表示
- 3 エラー処理
- 3・1 errno
- 3・2 エラーの種類
- 3・3 sys_errlist
- 3・4 perror
- 4 Linuxのシステムコール一覧
第2章 プロセスの置換
- 1 プログラムとプロセス
- 2 execファミリー
- 2・1 execファミリー
- 2・2 l系execとv系exec
- 3 l系exec
- 3・1 l系execの書き方
- 3・2 プロセス置換の実際
- 3・3 execファミリーのエラー
- 4 v系exec
- 4・1 v系execの書き方(その1)
- 4・2 v系execの書き方(その2)
- 5 PATHの検索
- 5・1 フルパスの不要
- 5・2 疑似コマンド名
- 6 環境変数の配列
- 6・1 mainの第3引数
- 6・2 環境変数を渡す
- 6・3 e形式を伴わない場合の環境変数
- 7 ポインタ定数と定数へのポインタ
- 7・1 ポインタ定数
- 7・2 定数へのポインタ
第3章 プロセスの複製
- 1 すべてのプロセスの親init
- 2 プロセスIDの取得getpid
- 3 fork
- 3・1 プロセスの複製
- 3・2 親子の識別
- 4 子プロセスの終了を待つwait
- 4・1 4種類のwait
- 4・2 wait
- 4・3 子プロセスの終了ステータス
- 4・4 マクロ
- 5 新規プロセスの作成
第4章 シグナル
- 1 シグナル
- 1・1 シグナル
- 1・2 シグナルの種類
- 1・3 シグナル名とシグナル番号
- 1・4 割り込みキー
- 1・5 割り込みキーの変更
- 1・6 killコマンドによるシグナルの送信
- 1・7 シグナルの種類を指定する(1)〜シグナル番号
- 1・8 coreが作られない
- 1・9 シグナルの種類を指定する(2)〜シグナル名
- 1・10 主なシグナル
- 2 シグナルハンドラの設定
- 2・1 準備プログラム
- 2・2 sleep
- 2・3 シグナルに対する動作を変える
- 2・4 signal
- 2・5 デフォルトの動作SIG_DFL
- 2・6 シグナルの無視SIG_IGN
- 2・7 シグナルハンドラ
- 2・8 シグナルハンドラの設定
- 2・9 ソフトウェア割り込み
- 2・10 シグナルハンドラの再設定
- 2・11 シグナルハンドラの中で終了させる
- 2・12 登録時のエラー
- 2・13 書式
- 3 自プロセスにシグナルを送る
- 3・1 シグナルSIGALRM
- 3・2 SIGALRMに対するシグナルハンドラ
- 3・3 pause
- 4 他のプロセスにシグナルを送る
- 4・1 子プロセスにシグナルを送る
- 4・2 引数で指定されたプロセスにシグナルを来る
第5章 低水準ファイル入出力
- 1 低水準ファイル入出力と高水準ファイル入出力
- 2 ファイルのオープン
- 2・1 ファイルディスクリプタ
- 2・2 オープンエラー
- 2・3 アクセスフラグ
- 3 ファイルのクローズ
- 4 ファイルを読む
- 4・1 readの使い方
- 4・2 サンプルプログラム
- 4・3 readのエラー処理
- 5 ファイルに書く
- 5・1 write
- 5・2 サンプルプログラム
- 5・3 書き込み時のオープンのエラー
- 6 ファイルの作成
- 6・1 O_CREAT
- 6・2 アクセスフラグ
- 6・3 ファイルのパーミッション
- 6・4 サンプルプログラム
- 6・5 ファイルのパーミッション(その2)
- 6・6 ユーザーマスク
- 7 効率とBUFSIZ
- 7・1 ファイルのコピー
- 7・2 しつこいエラー処理
- 7・3 複数バイトで読み書き
- 7・4 BUFSIZ
- 7・5 誤りを探せ
- 7・6 意味不明のデータ
- 8 標準のファイルディスクリプタ
- 9 ファイルディスクリプタの複製
- 9・1 dup
- 9・2 リダイレクト
- 9・3 サンプルプログラム
- 9・4 dup2
第6章 ioctlと端末制御
- 1 ioctlの一般的な書式
- 2 端末の検査
- 2・1 あいさつをするプログラム
- 2・2 端末との入出力を想定したプログラム
- 2・3 isatty
- 3 やさしい端末制御
- 3・1 デバイスに対するリクエスト
- 3・2 structtermio
- 3・3 my_isatty
- 4 端末のエコーを止める
- 4・1 端末のエコー
- 4・2 構造体termioのメンバー
- 4・3 エコーを止める
- 4・4 指定ビットをクリアする
- 4・5 サンプルプログラム(問題あり)
- 4・6 エコーの復活
- 4・7 端末の設定を保存する
- 4・8 エコー停止中の改行
- 4・9 ノーエコーでも改行〜ECHONLフラグ
- 4・10 指定ビットをセットする
- 5 COOKEDモード
- 5・1 COOKEDモードを調べるためのプログラム
- 5・2 erase,kill,eof文字
- 5・3 入力のバッファリング
- 5・4 行単位の編集サービス
- 6 RAWモード
- 6・1 RAWモードでの設定
- 6・2 1文字単位で入力
- 6・3 プロンプトが出力されない
- 6・4 出力のフラッシュ
- 7 端末属性VMINとVTIME
- 7・1 端末属性
- 7・2 2回入力する
- 7・3 キーの先行入力
- 7・4 端末属性のminの意味
- 7・5 プログラムの中でmin属性を設定する
- 8 リアルタイムキー入力
- 8・1 サンプルプログラム
- 8・2 min=0
- 8・3 エコーの停止
- 8・4 タイミングの調整(1)〜sleep版
- 8・5 タイミングの調整(2)〜time版
- 8・6 minとtime
- 9 ファンクションキーとESCキーの識別
- 9・1 キーコードを調べる
- 9・2 ファンクションキーとESCキーの識別
- 10 その他のフラグ
- 10・1 復帰と改行の変換
- 10・2 シグナルの割り込みキーの無効化
- 10・3 XON/XOFFの無効化
- 10・4 サンプルプログラム
第7章 名前なしパイプ
- 1 パイプ
- 2 単方向パイプ
- 2・1 パイプのオープンpipe
- 2・2 パイプの読み書きread/write
- 2・3 パイプのクローズclose
- 2・4 サンプルプログラム(1)
- 2・5 サンプルプログラム(2)
- 3 親子でプロセス間通信
- 3・1 プロセス間通信の手順
- 3・2 サンプルプログラム
- 4 双方向パイプ
- 5 execされた子プロセスとの通信
- 5・1 なぜ難しいか?
- 5・2 親プロセスの処理
- 5・3 子プロセスの処理
- 5・4 起動されるプロセスの処理
- 5・5 リスト
- 6 標準入力によるパイプ
- 6・1 種明かし
- 6・2 サンプルプログラム
第8章 名前付きパイプ
- 1 はじめに
- 1・1 ファイルの種類
- 1・2 名前なしパイプと名前つきパイプ
- 2 名前つきパイプを使う
- 2・1 UNIXのファイル
- 2・2 名前つきパイプの作成
- 2・3 名前つきパイプを使う(1)
- 2・4 名前つきパイプを使う(2)
- 2・5 名前つきパイプの削除
- 2・6 名前つきパイプの作成(もう1つの方法)
- 3 プログラムで使う名前つきパイプ
- 3・1 名前つきパイプの作成
- 3・2 ファイルの存在を調べる
- 3・3 レシーバー側
- 3・4 センダー側
- 4 ノンブロッキングモード
- 4・1 オープンプラグ
- 4・2 O_NONBLOCKまたはO_NDELAYフラグ
- 4・3 O_RDONLYのノンブロッキングモード
- 4・4 O_WRONLYのノンブロッキングモード
第9章 ソケット〜インターネットプログラミングの初歩
- 1 ソケットへの招待
- 2 クライアント/サーバー型のアプリケーション
- 2・1 サーバーの起動
- 2・2 ソケット(ファイル)
- 2・3 クライアントの起動
- 3 ソケットの作成
- 3・1 socket
- 3・2 ファイルディスクリプタ
- 3・3 ドメイン
- 3・4 通信方式
- 3・5 プロトコルの指定
- 3・6 ちょっと注意
- 4 ソケットに名前をつける
- 4・1 誰がbindを実行するか?
- 4・2 アドレスの指定
- 4・3 structsockaddr_un
- 4・4 bindのまとめ
- 5 ソケットキューの作成
- 6 接続の受付
- 6・1 acceptの書き方
- 6・2 listen用ソケットと通信用ソケット
- 6・3 通信用ソケットのファイルディスクリプタ
- 7 サーバー側の処理
- 8 接続の要求
- 9 クライアント側の処理
- 10 INETドメイン
- 10・1 socketの書き換え
- 10・2 INETドメインにおけるアドレス指定
- 10・3 IPアドレスの指定
- 10・4 INADDR_ANY
- 10・5 ポート番号
- 10・6 ネットワークバイトオーダー
- 10・7 htons
- 10・8 サーバー:INETドメイン版
- 10・9 クライアント:INETドメイン版
- 10・10 サーバーが起動できない
- 10・11 ソケットオプション
- 11 リピートサーバー
- 11・1 処理の流れ
- 11・2 ループの内容
- 11・3 サーバー終了のトリガ
- 11・4 実行例