多くの POSIX ブロッキング関数は、シグナルの場合に EINTR を返します。アイデアは、シグナルハンドラーが最初にフラグを設定し(SIGINTの場合は「停止」フラグと言う)、次にブロッキング関数がEINTRを返すブロックを解除し、アプリケーションがフラグを見て、正常なシャットダウン(または何でも)を実行することです。
ただし、pthread_mutex_lock や pthread_cond_wait などの一部のブロッキング関数では EINTR エラーは発生しません。
その背後にあるアイデアは何ですか?これらの機能を使用するアプリケーションは、シグナルをどのように処理することになっていますか (具体的には Ctrl+C)?