NextPrevUpTopContentsIndex

call-system

Function
Package

system

Signature

call-system command &key current-directory wait shell-type => status

Arguments

command

A string, a list of strings, a simple-vector of strings, or nil .

current-directory

A string. Implemented only on Windows.

wait

A boolean.

shell-type

A string or nil .

Values

status

The exit status of the invoked shell or process.

Description

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.

Compatibility Note

The :shell-type argument was not implemented in LispWorks for Windows versions 4.4 and earlier.

Example

On Unix:

(call-system (format nil "adb ~a < ~a > ~a"
                (namestring   a)
                (namestring   b)
                (namestring   c)))

On Windows:

CL-USER 176 > sys:call-system "sleep 3" :wait t
0
See also

open-pipe
call-system-showing-output
run-shell-command


LispWorks Reference Manual - 20 Jul 2006

NextPrevUpTopContentsIndex