signal handling & load in C5 added by mario-goulart on Tue Aug 6 10:41:11 2019
$ cat hup.scm (cond-expand (chicken-4 (use posix)) (chicken-5 (import (chicken base) (chicken process signal) (chicken process-context)))) (define param (make-parameter 42)) (define conf-file (car (command-line-arguments))) ; (load conf-file) (set-signal-handler! signal/hup (lambda (signum) (print "reloading conf file") (load conf-file))) (let loop () (print (param)) (sleep 1) (loop)) $ cat conf.scm (param 4) ;;; Case 1: `(load conf-file)` in the toplevel commented out ;;; Steps: ;;; 1. run hup.scm ;;; 2. go to another terminal and kill it with signal 1 $ ~/local/chicken-4.13.0/bin/csi -s hup.scm conf.scm 42 42 42 reloading conf file 4 4 4 $ ~/local/chicken-5.1.0/bin/csi -s hup.scm conf.scm 42 42 42 reloading conf file 42 42 42 ;;; Case 2: `(load conf-file)` in the toplevel uncommented ;;; Steps: ;;; 1. run hup.scm ;;; 2. go to another terminal change param in conf.scm and kill csi ;;; with signal 1 $ ~/local/chicken-4.13.0/bin/csi -s hup.scm conf.scm 4 4 4 reloading conf file 10 10 10 $ ~/local/chicken-5.1.0/bin/csi -s hup.scm conf.scm 10 10 10 reloading conf file 12 12 12