The multiprocessing capabilities in the x86 versions of CMUCL allow it to operate as a lisp server. This can be useful in a situation where you wish to execute a number of small scripts, where the overhead of launching a separate CMUCL instance would be penalizing. For a real application you would have to take security considerations into account.
(in-package :user) (format t "THIS A A HUDGE SECURITY RISC. CHANGE THE PASSWORD!!!~%~%") (setf mp::*idle-process* mp::*initial-process*) (mp::start-lisp-connection-listener :port 6789 :password "Clara") ;;; now you can telnet in and do: #| $telnet localhost 6789 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Enter password: "Clara" CMU Common Lisp Experimental 18a+ release x86-linux 2.2.0 cvs, running on slartibartfast Send bug reports and questions to your local CMU CL maintainer, or to email@example.com, or to firstname.lastname@example.org or Peter.VanEynde@uia.ua.ac.be or to email@example.com. (prefered) type (help) for help, (quit) to exit, and (demo) to see the demos Loaded subsystems: Python 1.0, target Intel x86 CLOS based on PCL version: September 16 92 PCL (f) * (+ 1 1) 2 * (quit) Connection closed by foreign host. |#
Craig Brozefsky has developed a prototype application called qcmu which generalizes this technique. It allows users to obtain either a REPL or to execute a script on a CMUCL server. qcmu uses a client-server protocol which incorporates authentication mechanisms.
by Peter Van Eynde