如何在RPG中创建警报和信号处理程序? (AS400 ISERIES V5R4)
-
30-09-2019 - |
题
有价值的答案将包括执行此类操作的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()内时调用另一种方法吗?是否允许,在程序完成之前,我该如何继续做某事,例如将桌子记录到桌子上直到我去哪里?
非常感谢 !
解决方案
本文提供了一些使用信号(包括sig_alarm)的好示例:ile rpg:http://systeminetwork.com/article/terminate-and-Stay-Stay-Residentin-rpg
如果您的程序在收到SIG_ALARM时正在运行,则执行将暂时切换到警报处理程序。警报处理程序完成后,执行将恢复其关闭的位置。
链接中给出的示例会从警报处理程序中进行QCMDEXC和文件IO,因此似乎您可以在那里做任何事情。 (不过,他的榜样基本上没有可能会干扰的主线运行;实际上,他的警报处理程序在主线结束后正在运行!)
不隶属于 StackOverflow