A string, a list of strings, a simple-vector of strings, or
A string. Implemented only on Microsoft Windows.
A string or
The exit status of the invoked shell or process.
On Unix-like systems, if the process was terminated by a signal this is the signal number, otherwise
nil on Microsoft Windows.
call-system allows executables and DOS or Unix shell commands to be called from Lisp code as a separate OS process. 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 as the command to run, using the
-c option, without any other arguments. The type of shell to run is determined by shell-type as described below. Note that for typical Unix shells, the string command may contain multiple commands separated by
If command is a list then it becomes the argv of a command to run directly, without invoking a shell. The 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 in C, and so on).
If command is a simple vector of strings, the element at index 0 is the command to run directly, without invoking a shell. The other elements are the complete set of arguments seen by the command (that is, element 1 becomes argv in C, and so on).
On Microsoft Windows, if command is a string, LispWorks hides the first window of the execution of the command, because that is the console that
cmd.exe starts in a DOS window. If the command itself is a console application, you may want to see the console. In this case run the command as a direct command. To do this, pass a list or a vector as described above. Conversely, if you run a console application and do not want to see the console, pass the command as a string.
On non-Windows platforms, 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
call-system returns the exit status of the process it created. Additionally on Unix-like systems if the process was terminated by a signal then
call-system returns the number of that signal. For a discussion of these return values see Interpreting the exit status.
If you need to be able to check whether the child process is alive and maybe to kill it, use open-pipe with
t (and maybe
:none) instead of
call-system, and then use pipe-exit-status and maybe pipe-kill-process.
:shell-typeis not implemented in LispWorks for Windows 4.4 and earlier, and
cmd.exeis not used implicitly.
cmd.exeby default when command is a string. In LispWorks 5.x the user may see a DOS command window in this case, but LispWorks 6.0 and later explicitly hide the DOS window. To call your command directly command should be a list, as in the last example below.
LispWorks User Guide and Reference Manual - 20 Sep 2017