[slime-devel] Re: scripting via swank
fatman at maxint.net
Sat Jan 27 20:48:01 UTC 2007
On Fri, Jan 26, 2007 at 12:31:07PM +0100, Helmut Eller wrote:
> * Gábor Melis [2007-01-25 19:09+0100] writes:
> > Ahoj
> > Suppose there is a long running lisp image with a swank server and I
> > want to connect to it from shell scripts and evaluate lisp forms in an
> > environment where *standard-output*, *standard-input* and
> > *error-output* are bound to streams that correspond to stdout, stdin
> > and stderr of the shell script.
> > The only idea I had was to pass the pid of the shell script to the lisp
> > and bind *standard-output* to
> > (open "/proc/<pid-of-shell-script/fd/0" ...) which should work on
> > linux.
I don't know that there is a good way to connect the shell script to
the actual standard I/O in the Lisp image, but you might be able to get
halfway there. You want a utility called nc (aka Netcat) that relays
data between its stdin/stdout and sockets. It was designed to allow
shell scripts to use streams to interface with network daemons and such.
$ echo -n "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80 > file.html
You'd have to listen on a socket in the Lisp, but once that connection
is made, you could use stream I/O. Netcat works with UNIX domain sockets,
so you wouldn't have to worry about TCP connections from other hosts.
man page: http://www.openbsd.org/cgi-bin/man.cgi?query=nc
Another slightly less flexible possibility is Netpipes:
Linux: The ultimate video game.
More information about the slime-devel