
標準を読んで、次のことを学びました。
- シグナル処理は、プロセスのすべてのスレッドが共有する属性です。
- シグナルマスクはスレッド固有の属性です。
ただし、標準では、次の事項(2018年版Foundation Volume、セクション3.210リアルタイムプロセス)を、「プロセス内のすべてのスレッド間で共有されるシステムリソース」としてリストします。
- プロセスID、親プロセスID、プロセスグループID、セッションメンバーシップ、
- 実用的で有効な保存されたユーザーとグループIDと補助グループID、
- 現在の作業ディレクトリ、ルートディレクトリ、
- マスク、
- ファイル記述子。
リストから信号処理がありません。
信号処理がプロセスに関連する属性であると言うのは正しいですか?それとも上記のリストから除外する理由はありますか?
答え1
答えは「はい」です。信号処理は、プロセスのすべてのスレッドで共有されます。
リストで「除外」された理由は、シグナルハンドラが実際にプロセスの「属性」または「リソース」ではないためです。どこでも見ることができません/proc<pid>/
。これは通常、関数、グローバル変数、またはメモリがプロセスの「共有属性」であると言うのと同じです。これは「プロセス」定義の一部にすぎません。