のようなアトミック型でない限り、グローバル変数はシグナルハンドラで更新されませんsig_atomic_t
。次の 2 つの条件を考えると、シグナル ハンドラでグローバル変数を安全に編集できますか?
- シグナルハンドラを 1 つだけ定義する場合
sa_mask
ofを使用struct sigaction
してハンドラーのすべてのシグナルをブロックする場合- アプリケーションはシングルスレッドです
詳細の追加: 子プロセスの情報を保持する小さなグローバル リンク リストを取得しました。SIGCHLD (親プロセス) をキャッチしたら、シグナル ハンドラーでそのノードをリンク リストから削除します。上記の条件で、ある種の pthread_mutex_trylock() を使用して、シグナル ハンドラーでこのアクションを実行できますか?