私は C で Web サーバーを作成しており、エラー時に -1 を返し、「errno」変数に適切な値を設定するシステム コールをよく使用します。一部のシステム コールは、EINTR や EAGAIN を返すことができます。これらのエラー値の両方を使用し、システム コールを再試行する 2 つのラッパー HANDLE_EINTR、HANDLE_EAGAIN があります。
通常、システム コールが EINTR や EAGAIN を返すかどうかはマニュアル ページに記載されていますが、実際には返されないシステム コールもあります。また、一部のシステム コールは EINTR / EAGAIN を直接返すのではなく、その中で使用されている可能性のある他のシステム コールの失敗を通じて返す場合があります。
API が何を宣言しているかに関係なく、HANDLE_EINTR や HANDLE_EAGAIN を使用できるかどうかを尋ねたいと思います (これは必ずしも完全ではありません)。
また、Google の人々から、「close」システム コールで HANDLE_EINTR を使用することは (API はそれを使用することを参照していますが) 良い考えではないことを知っているので、使用しません。この動作を持つ他のシステム コールはありますか?
ありがとうございました。