Linux システムコール

[表紙]Linux システムコール

紙版発売

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 実行例

付録1 システムコール一覧

付録2 参考文献