2010-08-20 85 views
0

一個有價值的答案將包括RPG代碼,做這樣的事情如何在RPG中創建警報和信號處理程序? (AS400的iSeries V5R4)

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()中調用另一個方法嗎?是否允許,我怎麼能在程序結束之前繼續做某些事情,比如登錄桌面直到我去了哪裏?

非常感謝!

回答

1

本文給出了用信號(包括SIG_ALARM)從ILE RPG的一些很好的例子: http://systeminetwork.com/article/terminate-and-stay-residentin-rpg

如果在SIG_ALARM收到您的程序正在運行,執行臨時切換到報警處理程序。警報處理程序完成後,執行從停止的地方恢復。

鏈接中給出的示例從報警處理程序中執行QCMDEXC和文件IO,因此看起來您可以在其中執行任何操作。 (雖然他的例子基本上沒有可能被幹擾的主線運行;事實上,他的警報處理程序在主線結束後運行!)