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.

Reply via email to