That should be Carl Sassenrath. And, the code below works on Core 2.5.6.3.1 and latest View betas > 1.2.1.3.1 (On Windows, ctrl-c is not detected.)
Anton. > At bottom is the post of Carl Sassenrate from October > last year. > > Anton. > > > Hello. > > > > Is there any way to handle signals sent to a rebol script? I have this > > script that *MUST* clean-up when receiving a SIGTERM. > > > > Thanks. > > > > -Bruno > > Here is a short script that uses the REBOL system-port to intercept > "shutdown" types of interrupts from various operating systems. > > Why? For example, you would want to do this if you had a REBOL server > process on Linux that has internal state. You may want the chance to > write out information to files before quitting. This is the code you need > to make it happen. > > The code below will detect both CTRL-C and REBOL ESCAPE key. > > enable-system-trap: does [ > ; Trap OS interrupts > if not system/ports/system [ > if none? attempt [system/ports/system: open [scheme: 'system]][ > print "NOTE: Missing System Port" exit > ] > ] > if find get-modes system/ports/system 'system-modes 'signal [ > set-modes system/ports/system [ > signal: intersect get-modes system/ports/system > 'signal-names [ > sigquit sigterm sigint sighup > ] > ] > ] > system/console/break: 'signal > append system/ports/wait-list system/ports/system > ] > > check-system-trap: func [port /local msg] [ > ; Process OS interrupts > if not port? port [return none] > if any [port/scheme <> 'system port <> system/ports/system][return > port] > if not system/ports/system [return none] > while [msg: pick system/ports/system 1] [ > if find [signal escape] msg/1 [ > print ["System Trap:" msg] > ; (save files here) > quit > ] > ] > none > ] > > print "Starting..." > > enable-system-trap > > forever [ > wake-port: wait 20 ; timeout period > check-system-trap wake-port > ] -- To unsubscribe from this list, just send an email to [EMAIL PROTECTED] with unsubscribe as the subject.
