詳解UNIXプログラミング

     1. 概論
シェル
Bourne シェル /bin/sh

Cシェル /bin/csh

Kornシェル /bin/ksh

ユーザの入力を読み取り、コマンドを実行する
インタプリタ

入力は通常端末からだが、ファイルから(シェ
ルスクリプト)の場合もある
ファイル名
ファイル名にはスラッシュ文字(/)とnull文字が
使用できない

スラッシュはパスを区切る

null文字はパスを終了させる

新しくディレクトリを作ると .(ドット)と..(ドッ
トドット)の2つのファイル名が自動的に作成
される
作業ディレクトリ

各々のプロセスは作業ディレクトリを持つ

プロセスはchdirを用いて作業ディレクトリを
変更できる
ファイル記述子
プロセスが参照するファイルを識別するため
に、カーネルが使用する非負の整数

カーネルが既存ファイルをオープンしたりする
たび、ファイル記述子を返す

すべてのシェルは新たにプログラムを実行する
ときに、3つの記述子「標準入力」「標準出
力」「標準エラー出力」をオープンする
標準入出力
標準入出力関数はアンバッファド入出力関数に
対するバッファリングインターフェースを提供

アンバッファド入出力関数=バッファリングし
ない関数open, read, write, lseek, closeなどのこ
と

バッファリングしないと遅いのでそれを解消
プロセス

プログラム=実行可能ファイル

プロセス=プログラムの実行中のインスタン
ス

各プロセスにはプロセスIDと呼ばれる非負の
数値識別子が割り付けられる
ANSI C

ISOとANSIによって1989年、共同で標準化さ
れたC言語

多くの処理系がANSI Cの規格を順守

<unistd.h>にはUNIXシステムコールに関する
関数プロトタイプが収められる
システムデータ型
_tで終わるデータ型(ssize_tなど)は基本的なシ
ステムデータ型

通常typedef宣言が必要だが、ANSI C側で定義
されている

int,longなどを使わずにシステム環境ごとの差
異を吸収する
エラー処理
UNIX関数でエラーが起こるとたいてい負の値
が返され、追加情報がint errnoに設定される

エラーが発生しなかったときにerrnoがクリア
されることはないので、errnoを参照するのは
エラー発生時のみにすべき。
シグナル

特定の状況が発生したことをプロセスに通知

シグナル発生時に呼び出される関数を与え、デ
フォルトの処理を変更できる
システムコール

各システムコールに対して標準Cライブラリ関
数が提供されている

ユーザ側からはシステムコールとライブラリ関
数を意識して区別する必要はさほどない

Unix1

Editor's Notes