シグナルが受信されて処理されたときに、メインメソッド内でプロセスが実行されているとします。シグナルハンドラが終了すると、シグナルが受信されたメインの行にプロセスが戻るか、シグナルコールに戻りますか?シグナルハンドラはどこに戻りますか?
P.S.私は自分でこれをすぐにテストすることができると知っていますが、私のPCにアクセスできない間にこの考えは私に起こりました。
ありがとうございました。
シグナルが受信されて処理されたときに、メインメソッド内でプロセスが実行されているとします。シグナルハンドラが終了すると、シグナルが受信されたメインの行にプロセスが戻るか、シグナルコールに戻りますか?シグナルハンドラはどこに戻りますか?
P.S.私は自分でこれをすぐにテストすることができると知っていますが、私のPCにアクセスできない間にこの考えは私に起こりました。
ありがとうございました。
シグナルがトリガされたときにコード内の位置に戻ります。
多くのライブラリとアプリケーションは、同じメカニズムを利用してスレッドレスマルチタスク(例:libmill)を実装しています。
シグナルハンドラが完了すると、コードはシグナルが受信された時点で実行を継続します。コードがシステムコールを実行していた場合、EINTRで失敗することがあります。詳細はsignal(7)を参照してください。
「どこで呼び出されたのか」というのは、信号が受信されたときのコード内の場所を意味すると思いますか?信号関数への呼び出しとは対照的に?申し訳ありませんが、私は信号に新しく、私は私のプログラムをどのように書くかを決定するので、余分に明確にしたいと思います。 –
うん。私は言葉を微調整しました。 –