2012-11-14 27 views
9

私はUnixのネットワークプログラミングについて学んでいて、現在はソケットとファイル記述子の概念を理解しようとしています。私が理解しているところでは、ファイルディスクリプタは単にポインタ配列(File descriptor table?)の位置であり、これらのポインタはメモリのどこかのファイルを指しています。ソケットとファイル記述子

ソケットディスクリプタはファイルディスクリプタとこの配列を共有しますが、代わりにポインタはソケットを参照します。それともソケットにしか使われていないものがありますか?

このアレイは、すべてのアプリケーション/プロセスに固有のアレイですか?

答えて

10

はい、ソケットはファイルと同じテーブル内のインデックスです。少なくともUNIXシステム(LinuxやOSXなど)の場合、Windowsは異なります。 readおよびwriteを使用してデータを送受信します。

各プロセスには独自の「ファイル」記述子テーブルがあります。

+0

私のファイル記述子の解釈が正しくないのですが、ファイル記述子テーブルが何らかの多型であると言うことができますか? – Carlj901

+0

@ Carlj901はい、一種です。ファイル記述子( 'open'または' socket'によって返される)は、このテーブルまたはポインタへのインデックスです。ポインタはファイルかソケットかによって、異なる構造体を指すことができます。 –

1

ソケットは、UNIXオペレーティングシステムのファイルに過ぎません。 UNIXオペレーティングシステムではすべてがファイルとして扱われます。ソケットを作成するたびに、ファイル記述子テーブルにエントリが作成されます。エントリには、標準の入出力エラーや標準エラー、その他の詳細が含まれています。ファイル記述子は、ファイルテーブルへのポインタとして機能します。このファイルテーブルには、読み込み、書き込みなどの処理が行われ、そのファイルのiノードテーブルへのポインタが格納されています。ファイルのdeatils。

+0

UNIXではファイルとして扱われますか?すべてのプロセスと同様に?また、ソケットファイルの外観や内容はどうなっていますか? –

関連する問題