2012-03-03 7 views
4

シグナルが配信されると、シグナルハンドラはプロセスのスタック上で実行されます。 sigaction()にSA_ONSTACKが使用されている場合は、別のスタックが使用されます。sigactionでのSA_ONSTACKの使用は何ですか?

異なるスタックを使用することは何ですか?どのユースケースの例ですか?

答えて

10

代替スタックを1回使用すると、SIGSEGVを正しく処理することができます。

プロセスがスタック制限を超えたためにSIGSEGVを受信したばかりの場合、プロセスのスタック上でシグナルハンドラを実行することはできません。代わりのスタックを持つことで、(慎重に)多かれ少なかれグレースフルシャットダウンを実行することができます。

+0

+1これは、正確に 'sigaltstack'のTLPIの例です。 – cnicutar

関連する問題