Run webserver after binary call and get user sigint

This commit is contained in:
Marcus Kammer 2024-07-02 20:27:58 +02:00
parent f36918b2c4
commit 0f4ac720d1
Signed by: marcuskammer
GPG key ID: C374817BE285268F
3 changed files with 22 additions and 2 deletions

View file

@ -8,7 +8,7 @@
(quicklisp-setup) (quicklisp-setup)
(ql:quickload :dev.metalisp.survey) (ql:quickload :dev.metalisp.survey)
(let ((app-name (uiop:os-cond (:windows "survey-buttler.exe") (let ((app-name (uiop:os-cond ((eq :os-windows (uiop:detect-os)) "survey-buttler.exe")
(:linux "survey-buttler")))) ((eq :os-unix (uiop:detect-os)) "survey-buttler"))))
(sb-ext:save-lisp-and-die app-name :executable t :toplevel 'ml-survey:main)) (sb-ext:save-lisp-and-die app-name :executable t :toplevel 'ml-survey:main))
(quit) (quit)

View file

@ -35,3 +35,22 @@
(defun start () (defun start ()
(start-server *app*)) (start-server *app*))
(defun main ()
(start)
;; let the webserver run.
;; warning: hardcoded "hunchentoot".
;; You can simply run (sleep most-positive-fixnum)
(handler-case (bt:join-thread (find-if (lambda (th)
(search "hunchentoot" (bt:thread-name th)))
(bt:all-threads)))
;; Catch a user's C-c
(#+sbcl sb-sys:interactive-interrupt
#+ccl ccl:interrupt-signal-condition
#+clisp system::simple-interrupt-condition
#+ecl ext:interactive-interrupt
#+allegro excl:interrupt-signal
() (progn
(format *error-output* "Aborting.~&")
(uiop:quit)))
(error (c) (format t "Woops, an unknown error occured:~&~a~&" c))))

View file

@ -3,6 +3,7 @@
(:import-from #:hunchentoot (:import-from #:hunchentoot
#:easy-acceptor) #:easy-acceptor)
(:export (:export
#:main
#:*html-lang* #:*html-lang*
#:survey #:survey
#:survey-id #:survey-id