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