アプリケーションのイベント駆動型ですか? (メインループに select()/epoll_wait()
が含まれていることを意味します 呼び出します)
イベント ドリブン アプリケーションでは、すべてのシグナルをブロックし、pselect()/epoll_pwait()
の間のみブロックを解除できます。 電話。このようにして、コードの残りの部分で EINTR を処理する必要がなくなります。
sigaction を参照してください:http://pubs.opengroup.org/onlinepubs/009695399/functions/sigaction.html
SA_RESTART
This flag affects the behavior of interruptible functions; that is, those
specified to fail with errno set to EINTR. If set, and a function specified
as interruptible is interrupted by this signal, the function shall restart
and shall not fail with EINTR unless otherwise specified. If the flag is not
set, interruptible functions interrupted by this signal shall fail with errno
set to EINTR.
デフォルトでは、SA_RESTART の動作があるため、シグナルをいじらない場合、EINTR について心配する必要はありません。