UNIXのソケットについて
スポンサードリンク
UNIXシステムでは、各プロセス(プログラム)は外部と通信する前にソケットというものを生成し、通信はそこを通して行われます。ソケットとは簡単に言うと各プロセスと外部をつなぐデータの出入り口のようなもので、まずソケットを相手につないでから、そこに送信するデータを書き込んだり、そこから送られてきたデータを読み込んだりします。つまりUNIXシステムにおけるネットワーク通信とは厳密にいうとプロセス間の通信のことを指します。
ソケットはネットワーク通信に用いるファイル・ディスクリプタ(file descriptor)です。ファイル・ディスクリプタとは、プログラムがアクセスするファイルや標準入出力などをOSが識別するために用いる識別子のことを指します。
LinuxなどUNIX系OSでは,入出力はすべてバイト列(文字列の一種)として扱われます。入出力では,バイト列のことをストリーム(streamは「流れ」の意味)と呼びます。ディスクリプタは単なる整数で,ストリームを区別する識別子として使います。OSはあるプログラム(プロセス)がアクセスしているストリーム一つひとつに固有の番号を付け,その番号をディスクリプタと呼びます。
ディスクリプタはプロセスごとの固有の値で,0番が標準入力,1番が標準出力,2番が標準エラー出力であると決められています。そのほかのストリームはオープン(利用開始)されるたびに小さい番号から順に使われ,クローズ(利用終了)されると同じ番号が再利用されます。ファイル・ディスクリプタさえあれば,読み出しにはreadシステム・コール,書き込みにはwriteシステム・コールが使えます
|
|
|