Go to the first, previous, next, last section, table of contents.

### `ox_reset`,`ox_intr`,`register_handler`

`ox_reset(number)`
  :: Resets an OpenXM server
`ox_intr(number)`
  :: Sends `SIGINT` to an OpenXM server
`register_handler(func)`
  :: Registers a function callable on a keyboard interrupt.

return
  1
number
  integer(process identifier)
func
  functor or 0

- `ox_reset()` resets a process whose identifier is number. After its execution the process is ready for receiving data.
- After executing `ox_reset()`, sending/receiving buffers and stream buffers are assured to be empty.
- Even if a process is running, the execution is safely stopped.
- `ox_reset()` may be used prior to a distirbuted computation. It can be also used to interrupt a distributed computation.
- `ox_intr()` sends `SIGINT` to a process whose identifier is number. The action of a server against `SIGINT` is not specified in OpenXM. ``ox_asir'` immediately enters the debug mode and pops up an window to input debug commands on X window system.
- `register_handler()` registers a function func(). If `u` is specified on a keybord interrupt, func() is executed before returning the toplevel. If `ox_reset()` calls are included in func(), one can automatically reset OpenXM servers on a keyboard interrupt.
- If func is equal to 0, the setting is reset.

    [10] ox_launch();
    0
    [11] ox_rpc(0,"fctr",x^100-y^100);
    0
    [12] ox_reset(0); /* usr1 : return to toplevel by SIGUSR1 */
    1                 /* is displayed on the xterm.           */

    [340] Procs=[ox_launch(),ox_launch()];
    [0,1]
    [341] def reset() { extern Procs; map(ox_reset,Procs);}
    [342] map(ox_rpc,Procs,"fctr",x^100-y^100);
    [0,0]
    [343] register_handler(reset);
    1
    [344] interrupt ?(q/t/c/d/u/w/?) u
    Abort this computation? (y or n) y
    Calling the registered exception handler...done.
    return to toplevel

`References`
  section `ox_rpc`, `ox_cmo_rpc`, `ox_execute_string`

Go to the first, previous, next, last section, table of contents.