私は、引数としてファイルディスクリプタと呼ばれているAPIを持っている、そしてそれは、内部のファイル記述子に関連付けられているいくつかの状態を保存します。その後、同じファイル記述子値を持つ後続の呼び出しで、前に生成された状態を調べることができます。ファイルディスクリプタ値が再利用されたことを伝えるための方法はありますか?
これは主に、呼び出し元コードがファイル記述子を使用してAPIを呼び出し、ファイル記述子を閉じてから終了するsocket()またはaccept()などを介して新しいファイル記述子を割り当てます新しいファイルディスクリプタをAPIに渡します。その時点で、私のAPIは誤って古いソケットの状態を新しいファイル記述子に関連付けるので、間違ったことをします。私のAPIが関連付けられた状態を削除するには、知っているように、この問題へ
一つの解決策は、それがソケットを閉じたときに、私のAPIを通知するために、呼び出し元のコードを強制することです....が、私は強制的に希望されませんユーザーには不便なので、やり直すことを忘れる傾向があります。
したがって、時刻Tのファイル記述子が時刻(T-x)に関連付けられていた同じ基礎構造に依然として関連付けられているかどうかを知る巧妙な方法があるかどうかは疑問です。私がそれを行うことができれば、私のAPIは、ファイル記述子の整数値がいつ再利用されたかを知り、適切なことをするのに十分なほどスマートになります。
FWIWこのコードは、MacOS/XとLinuxで主に動作するようになっていますが、より移植性の高いソリューションであればあるほど優れています。
ブー、リファクタリングまでの時間。 :^) –
(まあ、あなたが_could_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _そんなクレイジーなことを示唆している) – Mat