有价值的答案将包括执行此类操作的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,因此似乎您可以在那里做任何事情。 (不过,他的榜样基本上没有可能会干扰的主线运行;实际上,他的警报处理程序在主线结束后正在运行!)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top