From: John K. H. <hi...@al...> - 2002-08-23 14:50:15
|
> ((in (ext:run-shell-command (format nil "~S ~{ \'~S\'~} 2>&1" Note that when Lisp is launching the command it needs to use a shell that understands the "2>&1" syntax. So /bin/csh and /bin/tcsh will NOT work. The shell used can probably be ensured by setting environment varialbe SHELL to /bin/sh or un-setting it. There's no ambiguity w/ the wrapper script as the shell is set explitly with the first "#!/bin/sh" line which says what interpereter to use to run the script. I agree w/ all of what Randall Schultz said too. More important than the "exec" (forking's pretty cheap these days) is the use of the syntax to prevent un-escaping of the shell arguments. > 1) wouldn't it be nice to have an :ERROR-STREAM keyword arg ala :INPUT > and :OUTPUT? (Sam, if you don't have objections i'd be happy to > take a whack at this.) the right way. If the underlying O/S has a two-output-stream model, and the point of the call is to interface to the underlying O/S program exec facility, both streams should be accessible explicitly. Things get even worse when you start opening command pipes and want to route their separate output/error streams to different places using only the shell redirection syntax ... --- John Hinsdale, Alma Mater Software, Inc., Tarrytown, NY 10591-3710 USA hi...@al... | http://www.alma.com/staff/hin | +1 914 631 4690 |