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