2011-07-10 14 views
0

私はLinuxで作業しています。
SIGSEGVを送信するときに呼び出される関数を記述しました。linuxでシグナルを受け取る

コマンドプロンプトkill -SIGSEGV pidから送信して自分のプログラムをチェックします。
私のプログラムが新しいイーサネット入力をポーリングしていないときに、信号を捕まえて「ゾンビ状態」を入力しないと、つまりログファイルには何も書き込まないことに気付きました...

ロジックはありますかなぜプログラムがないのですいつもキャッチシグナル?

+1

SIGSEGVはシグナルです。あなたは、信号と割り込みという用語を混在させます。 – flolo

+1

1.あなたの言葉をまっすぐにしてください、SIGSEVGはシグナル*です - 割り込みはまったく別の動物であり、ユーザー空間プログラムとはまったく関係がありません。私は論理的な説明があると確信していますが、悪い時に私たちを捕まえました。私たちは皆クリスタルボールを自宅に残しました。 – thkala

+0

コード(1000個のファイル...)を投稿できません。これは私が論理の説明を求めた理由です。 – DavidBobo

答えて

0

SIGSEVG信号のみを「リッスンする」スレッドと、新しいインターネット入力のみをポーリングするスレッドを作成できます。

この方法では、新しいイーサネット入力をポーリングするときに、プログラムがSIGSEVG信号を「ミス」することはありません。

+0

シグナル、特にSIGSEGVは、その時点で何をしているかにかかわらず、プログラムが無視できるものではありません... – thkala

+0

シグナルはスレッドに依存していますか? – DavidBobo

+0

@thkalaこのようにして、ポーリング作業をスレッドに委譲することができますが、メインプログラムは他のアクティビティとSIGSEVG処理にのみ集中します。 – Stephan

関連する問題