man signal(7)SA_RESTART
によると、シグナルハンドラをインストールするときにフラグが使用されている場合、一部のシステムコールはカーネルによって透過的に再起動できます。
次のインターフェイスのいずれかへのブロックされた呼び出しがシグナル ハンドラーによって中断された場合、SA_RESTART フラグが使用されていれば、シグナル ハンドラーが戻った後に呼び出しが自動的に再開されます。そうしないと、呼び出しはエラー EINTR で失敗します。
次に、再起動できる(およびできない)いくつかのシステムコールについて言及していますがclose()
、どちらの場所でも言及していclose()
ません。それを指定しPOSIX
ますか、それとも Linux 固有の動作ですか? 詳細はどこで確認できますか?