のような多くのシステムコールはclose( fd )
、シグナルによって中断される可能性があります。この場合、通常-1
は が返され、errno
設定されEINTR
ます。
問題は、何をするのが正しいかということです。言ってください、私はまだこれfd
を閉じたいと思っています。
私が思いつくことができるのは:
while( close( fd ) == -1 )
if( errno != EINTR ) {
ReportError();
break;
}
この状況を処理するためのより良い/よりエレガントな/標準的な方法を提案できる人はいますか?
更新: mux が気づいたRESTART
ように、シグナル ハンドラをインストールするときに SA_ フラグを使用できます。POSIX
だけでなく、すべてのシステムで再起動可能であることが保証されている機能を誰か教えてもらえますLinux
か?