2010-08-20 5 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 из обработчика аварийной сигнализации, поэтому, похоже, вы можете сделать что угодно. (Хотя в его примере в основном не было основного хода, на которое можно было вмешаться, на самом деле его обработчик тревоги работал после окончания магистрали!)

 Смежные вопросы

  • Нет связанных вопросов^_^