Brian Downing <see-signature@lavos.net> wrote:
+---------------
| * Running the Lisp image in screen(1) or attachtty(1). ...
| * Load Swank in the image ...
| * Roll your own method of injecting commands.
| There are myriad ways this could be done.
+---------------
Various implementations may provide something useful,
e.g., CMUCL provides MP::START-LISP-CONNECTION-LISTENER:
> (describe 'mp::start-lisp-connection-listener)
START-LISP-CONNECTION-LISTENER is an internal symbol in the
MULTIPROCESSING package.
...
Function arguments:
(&key (port 1025) (password (random (expt 2 24))))
Function documentation:
Create a Lisp connection listener, listening on a TCP port for new
connections and starting a new top-level loop for each. If a password
is not given then one will be generated and reported. A search is
performed for the first free port starting at the given port which
defaults to 1025.
...
> (mp::start-lisp-connection-listener :password "foobar")
#<Process Anonymous {489C2AB5}>
;;; Started lisp connection listener on port 1025 with password foobar
> (defun foo (x) (+ x 37))
FOO
>
Then in another window [note that the password is read with the
Lisp reader, so in this case we must type the string quotes, too]:
$ telnet localhost 1025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Enter password: "foobar"
> (foo 10)
47
> ^]
telnet> q
Connection closed.
$
-Rob
-----
Rob Warnock <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607