A string, a list of strings, a simple-vector of strings, or
nil
.
A string. Implemented only on Windows.
A boolean.
A string or
nil
.
call-system
allows executables and DOS or Unix shell commands to be called from Lisp code. The output goes to standard output, as the operating system sees it. (This normally means
*terminal-io*
in LispWorks.)
If command is a string then it is passed to the shell the command to run without any other arguments. The type of shell to run is determined by shell-type as described below.
If
command
is a list, then its first element is the command to run directly and the other elements are passed as arguments on the command line (that is, element 0 has its name in argv[0] in C, and so on). If
command
is a simple-vector of strings, the element at index 0 is the command to run and the other elements are the complete set of arguments seen by the command (that is, element 1 becomes argv[0] in C, and so on). If
command
is
nil
, then the shell is run.
On Windows current-directory is the lpCurrentDirectory argument passed to CreateProcess. If this is not supplied, the pathname-location of the current-pathname is passed.
If
wait
is true,
call-system
does not return until the process has exited. The default for
wait
is
t
.
On Unix/Linux/Mac OS X, if
shell-type
is a string it specifies the shell. If
shell-type
is
nil
(the default) then the Bourne shell,
/bin/sh
, is used. The C shell may be obtained by passing
"/bin/csh"
.
On Windows if
shell-type
is
nil
then
cmd.exe
is used on Windows XP, Windows 2000 and Windows NT and
command.com
on Windows 98 and Windows ME.
call-system
returns the exit status of the shell invoked to execute the command on Unix/Linux/Mac OS X, or the process created on Windows.
The
:shell-type
argument was not implemented in LispWorks for Windows versions 4.4 and earlier.
(call-system (format nil "adb ~a < ~a > ~a"
(namestring a)
(namestring b)
(namestring c)))
CL-USER 176 > sys:call-system "sleep 3" :wait t
0