1

select() を使用して接続の準備ができているソケットをポーリングするプログラムがあります。

ソケットにバインドして send() コマンドを発行する別のプログラムがあります。

私が持っている質問は、ファイル記述子がそのような 2 つの実行可能ファイルで機能するかどうかです。

つまり、プログラム A のファイル記述子 5 を FD_SET に追加し、プログラム B のソケット fd が 5 の場合、そのソケットの send() は、5 を含む FD_SET で選択を行っているプログラム A を起動することを意味しますか?

ありがとう

4

3 に答える 3

2

いいえ、ファイル記述子番号はプロセス固有です。異なるプロセス間で同じ fd 番号を使用しても、暗黙的な影響はありません。

于 2012-08-17T00:22:03.643 に答える
0

ほとんどの場合、1024 個の記述子 (ファイル/ソケット) が特定のプロセス (0-1023) でサポートされていました (/proc//limits のプロセスでサポートされるファイル/ソケット記述子の最大制限を参照してください)。

最初の 3 つの記述子 (0、1、および 2) は、それぞれ stdin、stdout、および stderr に割り当てられました。値が 3 の次の記述子は、次に開いているファイル/ソケット記述子に割り当てられ、/proc で指定された制限まで使用できます。注: サポートされる最大記述子を変更することもできます。

特定のプロセスによって開かれているファイル記述子のリストは、/proc//fd で確認できます。各プロセス記述子/シグナル/イベント スコープは、プロセスのみに固有です。

于 2012-08-17T05:20:03.397 に答える
0

ファイル記述子番号とは関係ありません。

もう一方の端が読み取り用に選択されているソケットである接続を介してソケット経由で送信すると、セレクターは読み取りイベントを検出します。

于 2012-08-16T23:53:09.150 に答える