Copyright (C) 2000-2012 |
GNU Info (elisp)Subprocess CreationFunctions that Create Subprocesses ================================== There are three functions that create a new subprocess in which to run a program. One of them, `start-process', creates an asynchronous process and returns a process object (Note: Asynchronous Processes). The other two, `call-process' and `call-process-region', create a synchronous process and do not return a process object (Note: Synchronous Processes). Synchronous and asynchronous processes are explained in the following sections. Since the three functions are all called in a similar fashion, their common arguments are described here. In all cases, the function's PROGRAM argument specifies the program to be run. An error is signaled if the file is not found or cannot be executed. If the file name is relative, the variable `exec-path' contains a list of directories to search. Emacs initializes `exec-path' when it starts up, based on the value of the environment variable `PATH'. The standard file name constructs, `~', `.', and `..', are interpreted as usual in `exec-path', but environment variable substitutions (`$HOME', etc.) are not recognized; use `substitute-in-file-name' to perform them (Note: File Name Expansion). Each of the subprocess-creating functions has a BUFFER-OR-NAME argument which specifies where the standard output from the program will go. It should be a buffer or a buffer name; if it is a buffer name, that will create the buffer if it does not already exist. It can also be `nil', which says to discard the output unless a filter function handles it. (Note: Filter Functions, and Note: Read and Print.) Normally, you should avoid having multiple processes send output to the same buffer because their output would be intermixed randomly. All three of the subprocess-creating functions have a `&rest' argument, ARGS. The ARGS must all be strings, and they are supplied to PROGRAM as separate command line arguments. Wildcard characters and other shell constructs have no special meanings in these strings, since the whole strings are passed directly to the specified program. *Please note:* The argument PROGRAM contains only the name of the program; it may not contain any command-line arguments. You must use ARGS to provide those. The subprocess gets its current directory from the value of `default-directory' (Note: File Name Expansion). The subprocess inherits its environment from Emacs, but you can specify overrides for it with `process-environment'. Note: System Environment. - Variable: exec-directory The value of this variable is a string, the name of a directory that contains programs that come with GNU Emacs, programs intended for Emacs to invoke. The program `movemail' is an example of such a program; Rmail uses it to fetch new mail from an inbox. - User Option: exec-path The value of this variable is a list of directories to search for programs to run in subprocesses. Each element is either the name of a directory (i.e., a string), or `nil', which stands for the default directory (which is the value of `default-directory'). The value of `exec-path' is used by `call-process' and `start-process' when the PROGRAM argument is not an absolute file name. automatically generated by info2www version 1.2.2.9 |