1

貴重な答えには、このようなことを行うrpgコードが含まれます

volatile bool interrupted;
main() {
  sigaction(SIG_ALARM, myhandler) // register handler
  alarm(3) // set the alarm
  sleep(5) // blocking call, sleep just as an example.
  alarm(0) // disable the alarm
}
myHandler() {
  interrupted=true
}

私はあなたがその考えを持っていると思います。スリープと同様にブロックするコードがあり、ブロックしている通話のロックを解除するア​​ラームが必要です

別の質問ですが、アラームハンドラーが終了した後、実行ポイントはどこに行きますか?プログラムを終了しますか?、myHandler()内で別のメソッドを呼び出すことはできますか?許可されていますか?プログラムが終了する前に、どこに行くまでテーブルにログを記録するなど、どうすれば何かを続けることができますか?

どうもありがとうございます !

4

1 に答える 1

2

この記事では、ILE RPGからのシグナル(SIG_ALARMを含む)の使用例をいくつか示します。http: //systeminetwork.com/article/terminate-and-stay-residentin-rpg

SIG_ALARMの受信中にプログラムが実行されている場合、実行は一時的にアラームハンドラに切り替わります。アラームハンドラが終了すると、中断したところから実行を再開します。

リンクに示されている例では、QCMDEXCとアラームハンドラーからのファイルIOを実行しているため、そこではほぼ何でもできるように見えます。(ただし、彼の例では、基本的に干渉される可能性のあるメインラインが実行されていませんでした。実際、彼のアラームハンドラーは、メインラインが終了した後に実行されていました!)

于 2010-08-21T21:40:33.907 に答える