C-x 5 1
[emacs.git] / lispref / processes.texi
blob289ae42017cba363a22a02131ef1befe252a20d3
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999
4 @c   Free Software Foundation, Inc. 
5 @c See the file elisp.texi for copying conditions.
6 @setfilename ../info/processes
7 @node Processes, Display, Abbrevs, Top
8 @chapter Processes
9 @cindex child process
10 @cindex parent process
11 @cindex subprocess
12 @cindex process
14   In the terminology of operating systems, a @dfn{process} is a space in
15 which a program can execute.  Emacs runs in a process.  Emacs Lisp
16 programs can invoke other programs in processes of their own.  These are
17 called @dfn{subprocesses} or @dfn{child processes} of the Emacs process,
18 which is their @dfn{parent process}.
20   A subprocess of Emacs may be @dfn{synchronous} or @dfn{asynchronous},
21 depending on how it is created.  When you create a synchronous
22 subprocess, the Lisp program waits for the subprocess to terminate
23 before continuing execution.  When you create an asynchronous
24 subprocess, it can run in parallel with the Lisp program.  This kind of
25 subprocess is represented within Emacs by a Lisp object which is also
26 called a ``process''.  Lisp programs can use this object to communicate
27 with the subprocess or to control it.  For example, you can send
28 signals, obtain status information, receive output from the process, or
29 send input to it.
31 @defun processp object
32 This function returns @code{t} if @var{object} is a process,
33 @code{nil} otherwise.
34 @end defun
36 @menu
37 * Subprocess Creation::      Functions that start subprocesses.
38 * Shell Arguments::          Quoting an argument to pass it to a shell.
39 * Synchronous Processes::    Details of using synchronous subprocesses.
40 * Asynchronous Processes::   Starting up an asynchronous subprocess.
41 * Deleting Processes::       Eliminating an asynchronous subprocess.
42 * Process Information::      Accessing run-status and other attributes.
43 * Input to Processes::       Sending input to an asynchronous subprocess.
44 * Signals to Processes::     Stopping, continuing or interrupting
45                                an asynchronous subprocess.
46 * Output from Processes::    Collecting output from an asynchronous subprocess.
47 * Sentinels::                Sentinels run when process run-status changes.
48 * Transaction Queues::       Transaction-based communication with subprocesses.
49 * Network::                  Opening network connections.
50 @end menu
52 @node Subprocess Creation
53 @section Functions that Create Subprocesses
55   There are three functions that create a new subprocess in which to run
56 a program.  One of them, @code{start-process}, creates an asynchronous
57 process and returns a process object (@pxref{Asynchronous Processes}).
58 The other two, @code{call-process} and @code{call-process-region},
59 create a synchronous process and do not return a process object
60 (@pxref{Synchronous Processes}).
62   Synchronous and asynchronous processes are explained in the following
63 sections.  Since the three functions are all called in a similar
64 fashion, their common arguments are described here.
66 @cindex execute program
67 @cindex @code{PATH} environment variable
68 @cindex @code{HOME} environment variable
69   In all cases, the function's @var{program} argument specifies the
70 program to be run.  An error is signaled if the file is not found or
71 cannot be executed.  If the file name is relative, the variable
72 @code{exec-path} contains a list of directories to search.  Emacs
73 initializes @code{exec-path} when it starts up, based on the value of
74 the environment variable @code{PATH}.  The standard file name
75 constructs, @samp{~}, @samp{.}, and @samp{..}, are interpreted as usual
76 in @code{exec-path}, but environment variable substitutions
77 (@samp{$HOME}, etc.) are not recognized; use
78 @code{substitute-in-file-name} to perform them (@pxref{File Name
79 Expansion}).
81   Each of the subprocess-creating functions has a @var{buffer-or-name}
82 argument which specifies where the standard output from the program will
83 go.  It should be a buffer or a buffer name; if it is a buffer name,
84 that will create the buffer if it does not already exist.  It can also
85 be @code{nil}, which says to discard the output unless a filter function
86 handles it.  (@xref{Filter Functions}, and @ref{Read and Print}.)
87 Normally, you should avoid having multiple processes send output to the
88 same buffer because their output would be intermixed randomly.
90 @cindex program arguments
91   All three of the subprocess-creating functions have a @code{&rest}
92 argument, @var{args}.  The @var{args} must all be strings, and they are
93 supplied to @var{program} as separate command line arguments.  Wildcard
94 characters and other shell constructs have no special meanings in these
95 strings, since the whole strings are passed directly to the specified
96 program.
98   @strong{Please note:} The argument @var{program} contains only the
99 name of the program; it may not contain any command-line arguments.  You
100 must use @var{args} to provide those.
102   The subprocess gets its current directory from the value of
103 @code{default-directory} (@pxref{File Name Expansion}).
105 @cindex environment variables, subprocesses
106   The subprocess inherits its environment from Emacs, but you can
107 specify overrides for it with @code{process-environment}.  @xref{System
108 Environment}.
110 @defvar exec-directory 
111 @pindex movemail
112 The value of this variable is a string, the name of a directory that
113 contains programs that come with GNU Emacs, programs intended for Emacs
114 to invoke.  The program @code{movemail} is an example of such a program;
115 Rmail uses it to fetch new mail from an inbox.
116 @end defvar
118 @defopt exec-path
119 The value of this variable is a list of directories to search for
120 programs to run in subprocesses.  Each element is either the name of a
121 directory (i.e., a string), or @code{nil}, which stands for the default
122 directory (which is the value of @code{default-directory}).
123 @cindex program directories
125 The value of @code{exec-path} is used by @code{call-process} and
126 @code{start-process} when the @var{program} argument is not an absolute
127 file name.
128 @end defopt
130 @node Shell Arguments
131 @section Shell Arguments
133   Lisp programs sometimes need to run a shell and give it a command
134 that contains file names that were specified by the user.  These
135 programs ought to be able to support any valid file name.  But the shell
136 gives special treatment to certain characters, and if these characters
137 occur in the file name, they will confuse the shell.  To handle these
138 characters, use the function @code{shell-quote-argument}:
140 @defun shell-quote-argument argument
141 This function returns a string which represents, in shell syntax,
142 an argument whose actual contents are @var{argument}.  It should
143 work reliably to concatenate the return value into a shell command
144 and then pass it to a shell for execution.
146 Precisely what this function does depends on your operating system.  The
147 function is designed to work with the syntax of your system's standard
148 shell; if you use an unusual shell, you will need to redefine this
149 function.
151 @example
152 ;; @r{This example shows the behavior on GNU and Unix systems.}
153 (shell-quote-argument "foo > bar")
154      @result{} "foo\\ \\>\\ bar"
156 ;; @r{This example shows the behavior on MS-DOS and MS-Windows systems.}
157 (shell-quote-argument "foo > bar")
158      @result{} "\"foo > bar\""
159 @end example
161 Here's an example of using @code{shell-quote-argument} to construct
162 a shell command:
164 @example
165 (concat "diff -c "
166         (shell-quote-argument oldfile)
167         " "
168         (shell-quote-argument newfile))
169 @end example
170 @end defun
172 @node Synchronous Processes
173 @section Creating a Synchronous Process
174 @cindex synchronous subprocess
176   After a @dfn{synchronous process} is created, Emacs waits for the
177 process to terminate before continuing.  Starting Dired on GNU or
178 Unix@footnote{On other systems, Emacs uses a Lisp emulation of
179 @code{ls}; see @ref{Contents of Directories}.} is an example of this: it
180 runs @code{ls} in a synchronous process, then modifies the output
181 slightly.  Because the process is synchronous, the entire directory
182 listing arrives in the buffer before Emacs tries to do anything with it.
184   While Emacs waits for the synchronous subprocess to terminate, the
185 user can quit by typing @kbd{C-g}.  The first @kbd{C-g} tries to kill
186 the subprocess with a @code{SIGINT} signal; but it waits until the
187 subprocess actually terminates before quitting.  If during that time the
188 user types another @kbd{C-g}, that kills the subprocess instantly with
189 @code{SIGKILL} and quits immediately (except on MS-DOS, where killing
190 other processes doesn't work).  @xref{Quitting}.
192   The synchronous subprocess functions return an indication of how the
193 process terminated.
195   The output from a synchronous subprocess is generally decoded using a
196 coding system, much like text read from a file.  The input sent to a
197 subprocess by @code{call-process-region} is encoded using a coding
198 system, much like text written into a file.  @xref{Coding Systems}.
200 @defun call-process program &optional infile destination display &rest args
201 This function calls @var{program} in a separate process and waits for
202 it to finish.
204 The standard input for the process comes from file @var{infile} if
205 @var{infile} is not @code{nil}, and from the null device otherwise.
206 The argument @var{destination} says where to put the process output.
207 Here are the possibilities:
209 @table @asis
210 @item a buffer
211 Insert the output in that buffer, before point.  This includes both the
212 standard output stream and the standard error stream of the process.
214 @item a string
215 Insert the output in a buffer with that name, before point.
217 @item @code{t}
218 Insert the output in the current buffer, before point.
220 @item @code{nil}
221 Discard the output.
223 @item 0
224 Discard the output, and return @code{nil} immediately without waiting
225 for the subprocess to finish.
227 In this case, the process is not truly synchronous, since it can run in
228 parallel with Emacs; but you can think of it as synchronous in that
229 Emacs is essentially finished with the subprocess as soon as this
230 function returns.
232 MS-DOS doesn't support asynchronous subprocesses, so this option doesn't
233 work there.
235 @item @code{(@var{real-destination} @var{error-destination})}
236 Keep the standard output stream separate from the standard error stream;
237 deal with the ordinary output as specified by @var{real-destination},
238 and dispose of the error output according to @var{error-destination}.
239 If @var{error-destination} is @code{nil}, that means to discard the
240 error output, @code{t} means mix it with the ordinary output, and a
241 string specifies a file name to redirect error output into.
243 You can't directly specify a buffer to put the error output in; that is
244 too difficult to implement.  But you can achieve this result by sending
245 the error output to a temporary file and then inserting the file into a
246 buffer.
247 @end table
249 If @var{display} is non-@code{nil}, then @code{call-process} redisplays
250 the buffer as output is inserted.  (However, if the coding system chosen
251 for decoding output is @code{undecided}, meaning deduce the encoding
252 from the actual data, then redisplay sometimes cannot continue once
253 non-@sc{ascii} characters are encountered.  There are fundamental
254 reasons why it is hard to fix this; see @ref{Output from Processes}.)
256 Otherwise the function @code{call-process} does no redisplay, and the
257 results become visible on the screen only when Emacs redisplays that
258 buffer in the normal course of events.
260 The remaining arguments, @var{args}, are strings that specify command
261 line arguments for the program.
263 The value returned by @code{call-process} (unless you told it not to
264 wait) indicates the reason for process termination.  A number gives the
265 exit status of the subprocess; 0 means success, and any other value
266 means failure.  If the process terminated with a signal,
267 @code{call-process} returns a string describing the signal.
269 In the examples below, the buffer @samp{foo} is current.
271 @smallexample
272 @group
273 (call-process "pwd" nil t)
274      @result{} 0
276 ---------- Buffer: foo ----------
277 /usr/user/lewis/manual
278 ---------- Buffer: foo ----------
279 @end group
281 @group
282 (call-process "grep" nil "bar" nil "lewis" "/etc/passwd")
283      @result{} 0
285 ---------- Buffer: bar ----------
286 lewis:5LTsHm66CSWKg:398:21:Bil Lewis:/user/lewis:/bin/csh
288 ---------- Buffer: bar ----------
289 @end group
290 @end smallexample
292 Here is a good example of the use of @code{call-process}, which used to
293 be found in the definition of @code{insert-directory}:
295 @smallexample
296 @group
297 (call-process insert-directory-program nil t nil @var{switches}
298               (if full-directory-p
299                   (concat (file-name-as-directory file) ".")
300                 file))
301 @end group
302 @end smallexample
303 @end defun
305 @defun call-process-region start end program &optional delete destination display &rest args
306 This function sends the text from @var{start} to @var{end} as
307 standard input to a process running @var{program}.  It deletes the text
308 sent if @var{delete} is non-@code{nil}; this is useful when
309 @var{destination} is @code{t}, to insert the output in the current
310 buffer in place of the input.
312 The arguments @var{destination} and @var{display} control what to do
313 with the output from the subprocess, and whether to update the display
314 as it comes in.  For details, see the description of
315 @code{call-process}, above.  If @var{destination} is the integer 0,
316 @code{call-process-region} discards the output and returns @code{nil}
317 immediately, without waiting for the subprocess to finish (this only
318 works if asynchronous subprocesses are supported).
320 The remaining arguments, @var{args}, are strings that specify command
321 line arguments for the program.
323 The return value of @code{call-process-region} is just like that of
324 @code{call-process}: @code{nil} if you told it to return without
325 waiting; otherwise, a number or string which indicates how the
326 subprocess terminated.
328 In the following example, we use @code{call-process-region} to run the
329 @code{cat} utility, with standard input being the first five characters
330 in buffer @samp{foo} (the word @samp{input}).  @code{cat} copies its
331 standard input into its standard output.  Since the argument
332 @var{destination} is @code{t}, this output is inserted in the current
333 buffer.
335 @smallexample
336 @group
337 ---------- Buffer: foo ----------
338 input@point{}
339 ---------- Buffer: foo ----------
340 @end group
342 @group
343 (call-process-region 1 6 "cat" nil t)
344      @result{} 0
346 ---------- Buffer: foo ----------
347 inputinput@point{}
348 ---------- Buffer: foo ----------
349 @end group
350 @end smallexample
352   The @code{shell-command-on-region} command uses
353 @code{call-process-region} like this:
355 @smallexample
356 @group
357 (call-process-region 
358  start end         
359  shell-file-name      ; @r{Name of program.}
360  nil                  ; @r{Do not delete region.}
361  buffer               ; @r{Send output to @code{buffer}.}
362  nil                  ; @r{No redisplay during output.}
363  "-c" command)        ; @r{Arguments for the shell.}
364 @end group
365 @end smallexample
366 @end defun
368 @defun shell-command-to-string command
369 This function executes @var{command} (a string) as a shell command,
370 then returns the command's output as a string.
371 @end defun
373 @node Asynchronous Processes
374 @section Creating an Asynchronous Process
375 @cindex asynchronous subprocess
377   After an @dfn{asynchronous process} is created, Emacs and the subprocess
378 both continue running immediately.  The process thereafter runs
379 in parallel with Emacs, and the two can communicate with each other
380 using the functions described in the following sections.  However,
381 communication is only partially asynchronous: Emacs sends data to the
382 process only when certain functions are called, and Emacs accepts data
383 from the process only when Emacs is waiting for input or for a time
384 delay.
386   Here we describe how to create an asynchronous process.
388 @defun start-process name buffer-or-name program &rest args
389 This function creates a new asynchronous subprocess and starts the
390 program @var{program} running in it.  It returns a process object that
391 stands for the new subprocess in Lisp.  The argument @var{name}
392 specifies the name for the process object; if a process with this name
393 already exists, then @var{name} is modified (by appending @samp{<1>},
394 etc.) to be unique.  The buffer @var{buffer-or-name} is the buffer to
395 associate with the process.
397 The remaining arguments, @var{args}, are strings that specify command
398 line arguments for the program.
400 In the example below, the first process is started and runs (rather,
401 sleeps) for 100 seconds.  Meanwhile, the second process is started, and
402 given the name @samp{my-process<1>} for the sake of uniqueness.  It
403 inserts the directory listing at the end of the buffer @samp{foo},
404 before the first process finishes.  Then it finishes, and a message to
405 that effect is inserted in the buffer.  Much later, the first process
406 finishes, and another message is inserted in the buffer for it.
408 @smallexample
409 @group
410 (start-process "my-process" "foo" "sleep" "100")
411      @result{} #<process my-process>
412 @end group
414 @group
415 (start-process "my-process" "foo" "ls" "-l" "/user/lewis/bin")
416      @result{} #<process my-process<1>>
418 ---------- Buffer: foo ----------
419 total 2
420 lrwxrwxrwx  1 lewis     14 Jul 22 10:12 gnuemacs --> /emacs
421 -rwxrwxrwx  1 lewis     19 Jul 30 21:02 lemon
423 Process my-process<1> finished
425 Process my-process finished
426 ---------- Buffer: foo ----------
427 @end group
428 @end smallexample
429 @end defun
431 @defun start-process-shell-command name buffer-or-name command &rest command-args
432 This function is like @code{start-process} except that it uses a shell
433 to execute the specified command.  The argument @var{command} is a shell
434 command name, and @var{command-args} are the arguments for the shell
435 command.  The variable @code{shell-file-name} specifies which shell to
436 use.
438 The point of running a program through the shell, rather than directly
439 with @code{start-process}, is so that you can employ shell features such
440 as wildcards in the arguments.  It follows that if you include an
441 arbitrary user-specified arguments in the command, you should quote it
442 with @code{shell-quote-argument} first, so that any special shell
443 characters do @emph{not} have their special shell meanings.  @xref{Shell
444 Arguments}.
445 @end defun
447 @defvar process-connection-type
448 @cindex pipes
449 @cindex @sc{pty}s
450 This variable controls the type of device used to communicate with
451 asynchronous subprocesses.  If it is non-@code{nil}, then @sc{pty}s are
452 used, when available.  Otherwise, pipes are used.
454 @sc{pty}s are usually preferable for processes visible to the user, as
455 in Shell mode, because they allow job control (@kbd{C-c}, @kbd{C-z},
456 etc.) to work between the process and its children, whereas pipes do
457 not.  For subprocesses used for internal purposes by programs, it is
458 often better to use a pipe, because they are more efficient.  In
459 addition, the total number of @sc{pty}s is limited on many systems and
460 it is good not to waste them.
462 The value of @code{process-connection-type} is used when
463 @code{start-process} is called.  So you can specify how to communicate
464 with one subprocess by binding the variable around the call to
465 @code{start-process}.
467 @smallexample
468 @group
469 (let ((process-connection-type nil))  ; @r{Use a pipe.}
470   (start-process @dots{}))
471 @end group
472 @end smallexample
474 To determine whether a given subprocess actually got a pipe or a
475 @sc{pty}, use the function @code{process-tty-name} (@pxref{Process
476 Information}).
477 @end defvar
479 @node Deleting Processes
480 @section Deleting Processes
481 @cindex deleting processes
483   @dfn{Deleting a process} disconnects Emacs immediately from the
484 subprocess, and removes it from the list of active processes.  It sends
485 a signal to the subprocess to make the subprocess terminate, but this is
486 not guaranteed to happen immediately.  The process object itself
487 continues to exist as long as other Lisp objects point to it.  The
488 process mark continues to point to the same place as before (usually
489 into a buffer where output from the process was being inserted).
491   You can delete a process explicitly at any time.  Processes are
492 deleted automatically after they terminate, but not necessarily right
493 away.  If you delete a terminated process explicitly before it is
494 deleted automatically, no harm results.
496 @defopt delete-exited-processes
497 This variable controls automatic deletion of processes that have
498 terminated (due to calling @code{exit} or to a signal).  If it is
499 @code{nil}, then they continue to exist until the user runs
500 @code{list-processes}.  Otherwise, they are deleted immediately after
501 they exit.
502 @end defopt
504 @defun delete-process name
505 This function deletes the process associated with @var{name}, killing it
506 with a @code{SIGHUP} signal.  The argument @var{name} may be a process,
507 the name of a process, a buffer, or the name of a buffer.
509 @smallexample
510 @group
511 (delete-process "*shell*")
512      @result{} nil
513 @end group
514 @end smallexample
515 @end defun
517 @defun process-kill-without-query process &optional do-query
518 This function specifies whether Emacs should query the user if
519 @var{process} is still running when Emacs is exited.  If @var{do-query}
520 is @code{nil}, the process will be deleted silently.
521 Otherwise, Emacs will query about killing it.
523 The value is @code{t} if the process was formerly set up to require
524 query, @code{nil} otherwise.  A newly-created process always requires
525 query.
527 @smallexample
528 @group
529 (process-kill-without-query (get-process "shell"))
530      @result{} t
531 @end group
532 @end smallexample
533 @end defun
535 @node Process Information
536 @section Process Information
538   Several functions return information about processes.
539 @code{list-processes} is provided for interactive use.
541 @deffn Command list-processes
542 This command displays a listing of all living processes.  In addition,
543 it finally deletes any process whose status was @samp{Exited} or
544 @samp{Signaled}.  It returns @code{nil}.
545 @end deffn
547 @defun process-list
548 This function returns a list of all processes that have not been deleted.
550 @smallexample
551 @group
552 (process-list)
553      @result{} (#<process display-time> #<process shell>)
554 @end group
555 @end smallexample
556 @end defun
558 @defun get-process name
559 This function returns the process named @var{name}, or @code{nil} if
560 there is none.  An error is signaled if @var{name} is not a string.
562 @smallexample
563 @group
564 (get-process "shell")
565      @result{} #<process shell>
566 @end group
567 @end smallexample
568 @end defun
570 @defun process-command process
571 This function returns the command that was executed to start
572 @var{process}.  This is a list of strings, the first string being the
573 program executed and the rest of the strings being the arguments that
574 were given to the program.
576 @smallexample
577 @group
578 (process-command (get-process "shell"))
579      @result{} ("/bin/csh" "-i")
580 @end group
581 @end smallexample
582 @end defun
584 @defun process-id process
585 This function returns the @sc{pid} of @var{process}.  This is an
586 integer that distinguishes the process @var{process} from all other
587 processes running on the same computer at the current time.  The
588 @sc{pid} of a process is chosen by the operating system kernel when the
589 process is started and remains constant as long as the process exists.
590 @end defun
592 @defun process-name process
593 This function returns the name of @var{process}.
594 @end defun
596 @defun process-contact process
597 This function returns @code{t} for an ordinary child process, and
598 @code{(@var{hostname} @var{service})} for a net connection
599 (@pxref{Network}).
600 @end defun
602 @defun process-status process-name
603 This function returns the status of @var{process-name} as a symbol.
604 The argument @var{process-name} must be a process, a buffer, a
605 process name (string) or a buffer name (string).
607 The possible values for an actual subprocess are:
609 @table @code
610 @item run
611 for a process that is running.
612 @item stop
613 for a process that is stopped but continuable.
614 @item exit
615 for a process that has exited.
616 @item signal
617 for a process that has received a fatal signal.
618 @item open
619 for a network connection that is open.
620 @item closed
621 for a network connection that is closed.  Once a connection
622 is closed, you cannot reopen it, though you might be able to open
623 a new connection to the same place.
624 @item nil
625 if @var{process-name} is not the name of an existing process.
626 @end table
628 @smallexample
629 @group
630 (process-status "shell")
631      @result{} run
632 @end group
633 @group
634 (process-status (get-buffer "*shell*"))
635      @result{} run
636 @end group
637 @group
639      @result{} #<process xx<1>>
640 (process-status x)
641      @result{} exit
642 @end group
643 @end smallexample
645 For a network connection, @code{process-status} returns one of the symbols
646 @code{open} or @code{closed}.  The latter means that the other side
647 closed the connection, or Emacs did @code{delete-process}.
648 @end defun
650 @defun process-exit-status process
651 This function returns the exit status of @var{process} or the signal
652 number that killed it.  (Use the result of @code{process-status} to
653 determine which of those it is.)  If @var{process} has not yet
654 terminated, the value is 0.
655 @end defun
657 @defun process-tty-name process
658 This function returns the terminal name that @var{process} is using for
659 its communication with Emacs---or @code{nil} if it is using pipes
660 instead of a terminal (see @code{process-connection-type} in
661 @ref{Asynchronous Processes}).
662 @end defun
664 @defun process-coding-system process
665 This function returns a cons cell describing the coding systems in use
666 for decoding output from @var{process} and for encoding input to
667 @var{process} (@pxref{Coding Systems}).  The value has this form:
669 @example
670 (@var{coding-system-for-decoding} . @var{coding-system-for-encoding})
671 @end example
672 @end defun
674 @defun set-process-coding-system process decoding-system encoding-system
675 This function specifies the coding systems to use for subsequent output
676 from and input to @var{process}.  It will use @var{decoding-system} to
677 decode subprocess output, and @var{encoding-system} to encode subprocess
678 input.
679 @end defun
681 @node Input to Processes
682 @section Sending Input to Processes
683 @cindex process input
685   Asynchronous subprocesses receive input when it is sent to them by
686 Emacs, which is done with the functions in this section.  You must
687 specify the process to send input to, and the input data to send.  The
688 data appears on the ``standard input'' of the subprocess.
690   Some operating systems have limited space for buffered input in a
691 @sc{pty}.  On these systems, Emacs sends an @sc{eof} periodically amidst
692 the other characters, to force them through.  For most programs,
693 these @sc{eof}s do no harm.
695   Subprocess input is normally encoded using a coding system before the
696 subprocess receives it, much like text written into a file.  You can use
697 @code{set-process-coding-system} to specify which coding system to use
698 (@pxref{Process Information}).  Otherwise, the coding system comes from
699 @code{coding-system-for-write}, if that is non-@code{nil}; or else from
700 the defaulting mechanism (@pxref{Default Coding Systems}).
702   Sometimes the system is unable to accept input for that process,
703 because the input buffer is full.  When this happens, the send functions
704 wait a short while, accepting output from subprocesses, and then try
705 again.  This gives the subprocess a chance to read more of its pending
706 input and make space in the buffer.  It also allows filters, sentinels
707 and timers to run---so take account of that in writing your code.
709 @defun process-send-string process-name string
710 This function sends @var{process-name} the contents of @var{string} as
711 standard input.  The argument @var{process-name} must be a process or
712 the name of a process.  If it is @code{nil}, the current buffer's
713 process is used.
715   The function returns @code{nil}.
717 @smallexample
718 @group
719 (process-send-string "shell<1>" "ls\n")
720      @result{} nil
721 @end group
724 @group
725 ---------- Buffer: *shell* ----------
727 introduction.texi               syntax-tables.texi~
728 introduction.texi~              text.texi
729 introduction.txt                text.texi~
731 ---------- Buffer: *shell* ----------
732 @end group
733 @end smallexample
734 @end defun
736 @defun process-send-region process-name start end
737 This function sends the text in the region defined by @var{start} and
738 @var{end} as standard input to @var{process-name}, which is a process or
739 a process name.  (If it is @code{nil}, the current buffer's process is
740 used.)
742 An error is signaled unless both @var{start} and @var{end} are
743 integers or markers that indicate positions in the current buffer.  (It
744 is unimportant which number is larger.)
745 @end defun
747 @defun process-send-eof &optional process-name
748   This function makes @var{process-name} see an end-of-file in its
749 input.  The @sc{eof} comes after any text already sent to it.
751   If @var{process-name} is not supplied, or if it is @code{nil}, then
752 this function sends the @sc{eof} to the current buffer's process.  An
753 error is signaled if the current buffer has no process.
755   The function returns @var{process-name}.
757 @smallexample
758 @group
759 (process-send-eof "shell")
760      @result{} "shell"
761 @end group
762 @end smallexample
763 @end defun
765 @defun process-running-child-p process
766 @tindex process-running-child-p process
767 This function will tell you whether a subprocess has given control of
768 its terminal to its own child process.  The value is @code{t} if this is
769 true, or if Emacs cannot tell; it is @code{nil} if Emacs can be certain
770 that this is not so.
771 @end defun
773 @node Signals to Processes
774 @section Sending Signals to Processes
775 @cindex process signals
776 @cindex sending signals
777 @cindex signals
779   @dfn{Sending a signal} to a subprocess is a way of interrupting its
780 activities.  There are several different signals, each with its own
781 meaning.  The set of signals and their names is defined by the operating
782 system.  For example, the signal @code{SIGINT} means that the user has
783 typed @kbd{C-c}, or that some analogous thing has happened.
785   Each signal has a standard effect on the subprocess.  Most signals
786 kill the subprocess, but some stop or resume execution instead.  Most
787 signals can optionally be handled by programs; if the program handles
788 the signal, then we can say nothing in general about its effects.
790   You can send signals explicitly by calling the functions in this
791 section.  Emacs also sends signals automatically at certain times:
792 killing a buffer sends a @code{SIGHUP} signal to all its associated
793 processes; killing Emacs sends a @code{SIGHUP} signal to all remaining
794 processes.  (@code{SIGHUP} is a signal that usually indicates that the
795 user hung up the phone.)
797   Each of the signal-sending functions takes two optional arguments:
798 @var{process-name} and @var{current-group}.
800   The argument @var{process-name} must be either a process, the name of
801 one, or @code{nil}.  If it is @code{nil}, the process defaults to the
802 process associated with the current buffer.  An error is signaled if
803 @var{process-name} does not identify a process.
805   The argument @var{current-group} is a flag that makes a difference
806 when you are running a job-control shell as an Emacs subprocess.  If it
807 is non-@code{nil}, then the signal is sent to the current process-group
808 of the terminal that Emacs uses to communicate with the subprocess.  If
809 the process is a job-control shell, this means the shell's current
810 subjob.  If it is @code{nil}, the signal is sent to the process group of
811 the immediate subprocess of Emacs.  If the subprocess is a job-control
812 shell, this is the shell itself.
814   The flag @var{current-group} has no effect when a pipe is used to
815 communicate with the subprocess, because the operating system does not
816 support the distinction in the case of pipes.  For the same reason,
817 job-control shells won't work when a pipe is used.  See
818 @code{process-connection-type} in @ref{Asynchronous Processes}.
820 @defun interrupt-process &optional process-name current-group
821 This function interrupts the process @var{process-name} by sending the
822 signal @code{SIGINT}.  Outside of Emacs, typing the ``interrupt
823 character'' (normally @kbd{C-c} on some systems, and @code{DEL} on
824 others) sends this signal.  When the argument @var{current-group} is
825 non-@code{nil}, you can think of this function as ``typing @kbd{C-c}''
826 on the terminal by which Emacs talks to the subprocess.
827 @end defun
829 @defun kill-process &optional process-name current-group
830 This function kills the process @var{process-name} by sending the
831 signal @code{SIGKILL}.  This signal kills the subprocess immediately,
832 and cannot be handled by the subprocess.
833 @end defun
835 @defun quit-process &optional process-name current-group
836 This function sends the signal @code{SIGQUIT} to the process
837 @var{process-name}.  This signal is the one sent by the ``quit
838 character'' (usually @kbd{C-b} or @kbd{C-\}) when you are not inside
839 Emacs.
840 @end defun
842 @defun stop-process &optional process-name current-group
843 This function stops the process @var{process-name} by sending the
844 signal @code{SIGTSTP}.  Use @code{continue-process} to resume its
845 execution.
847 Outside of Emacs, on systems with job control, the ``stop character''
848 (usually @kbd{C-z}) normally sends this signal.  When
849 @var{current-group} is non-@code{nil}, you can think of this function as
850 ``typing @kbd{C-z}'' on the terminal Emacs uses to communicate with the
851 subprocess.
852 @end defun
854 @defun continue-process &optional process-name current-group
855 This function resumes execution of the process @var{process} by sending
856 it the signal @code{SIGCONT}.  This presumes that @var{process-name} was
857 stopped previously.
858 @end defun
860 @c Emacs 19 feature
861 @defun signal-process pid signal
862 This function sends a signal to process @var{pid}, which need not be
863 a child of Emacs.  The argument @var{signal} specifies which signal
864 to send; it should be an integer.
865 @end defun
867 @node Output from Processes
868 @section Receiving Output from Processes
869 @cindex process output
870 @cindex output from processes
872   There are two ways to receive the output that a subprocess writes to
873 its standard output stream.  The output can be inserted in a buffer,
874 which is called the associated buffer of the process, or a function
875 called the @dfn{filter function} can be called to act on the output.  If
876 the process has no buffer and no filter function, its output is
877 discarded.
879   Output from a subprocess can arrive only while Emacs is waiting: when
880 reading terminal input, in @code{sit-for} and @code{sleep-for}
881 (@pxref{Waiting}), and in @code{accept-process-output} (@pxref{Accepting
882 Output}).  This minimizes the problem of timing errors that usually
883 plague parallel programming.  For example, you can safely create a
884 process and only then specify its buffer or filter function; no output
885 can arrive before you finish, if the code in between does not call any
886 primitive that waits.
888   It is impossible to separate the standard output and standard error
889 streams of the subprocess, because Emacs normally spawns the subprocess
890 inside a pseudo-TTY, and a pseudo-TTY has only one output channel.  If
891 you want to keep the output to those streams separate, you should
892 redirect one of them to a file--for example, by using an appropriate
893 shell command.
895   Subprocess output is normally decoded using a coding system before the
896 buffer or filter function receives it, much like text read from a file.
897 You can use @code{set-process-coding-system} to specify which coding
898 system to use (@pxref{Process Information}).  Otherwise, the coding
899 system comes from @code{coding-system-for-read}, if that is
900 non-@code{nil}; or else from the defaulting mechanism (@pxref{Default
901 Coding Systems}).
903   @strong{Warning:} Coding systems such as @code{undecided} which
904 determine the coding system from the data do not work entirely reliably
905 with asynchronous subprocess output.  This is because Emacs has to
906 process asynchronous subprocess output in batches, as it arrives.  Emacs
907 must try to detect the proper coding system from one batch at a time,
908 and this does not always work.  Therefore, if at all possible, use a
909 coding system which determines both the character code conversion and
910 the end of line conversion---that is, one like @code{latin-1-unix},
911 rather than @code{undecided} or @code{latin-1}.
913 @menu
914 * Process Buffers::       If no filter, output is put in a buffer.
915 * Filter Functions::      Filter functions accept output from the process.
916 * Accepting Output::      Explicitly permitting subprocess output.
917                             Waiting for subprocess output.
918 @end menu
920 @node Process Buffers
921 @subsection Process Buffers
923   A process can (and usually does) have an @dfn{associated buffer},
924 which is an ordinary Emacs buffer that is used for two purposes: storing
925 the output from the process, and deciding when to kill the process.  You
926 can also use the buffer to identify a process to operate on, since in
927 normal practice only one process is associated with any given buffer.
928 Many applications of processes also use the buffer for editing input to
929 be sent to the process, but this is not built into Emacs Lisp.
931   Unless the process has a filter function (@pxref{Filter Functions}),
932 its output is inserted in the associated buffer.  The position to insert
933 the output is determined by the @code{process-mark}, which is then
934 updated to point to the end of the text just inserted.  Usually, but not
935 always, the @code{process-mark} is at the end of the buffer.
937 @defun process-buffer process
938 This function returns the associated buffer of the process
939 @var{process}.
941 @smallexample
942 @group
943 (process-buffer (get-process "shell"))
944      @result{} #<buffer *shell*>
945 @end group
946 @end smallexample
947 @end defun
949 @defun process-mark process
950 This function returns the process marker for @var{process}, which is the
951 marker that says where to insert output from the process.
953 If @var{process} does not have a buffer, @code{process-mark} returns a
954 marker that points nowhere.
956 Insertion of process output in a buffer uses this marker to decide where
957 to insert, and updates it to point after the inserted text.  That is why
958 successive batches of output are inserted consecutively.
960 Filter functions normally should use this marker in the same fashion
961 as is done by direct insertion of output in the buffer.  A good
962 example of a filter function that uses @code{process-mark} is found at
963 the end of the following section.
965 When the user is expected to enter input in the process buffer for
966 transmission to the process, the process marker separates the new input
967 from previous output.
968 @end defun
970 @defun set-process-buffer process buffer
971 This function sets the buffer associated with @var{process} to
972 @var{buffer}.  If @var{buffer} is @code{nil}, the process becomes
973 associated with no buffer.
974 @end defun
976 @defun get-buffer-process buffer-or-name
977 This function returns the process associated with @var{buffer-or-name}.
978 If there are several processes associated with it, then one is chosen.
979 (Currently, the one chosen is the one most recently created.)  It is
980 usually a bad idea to have more than one process associated with the
981 same buffer.
983 @smallexample
984 @group
985 (get-buffer-process "*shell*")
986      @result{} #<process shell>
987 @end group
988 @end smallexample
990 Killing the process's buffer deletes the process, which kills the
991 subprocess with a @code{SIGHUP} signal (@pxref{Signals to Processes}).
992 @end defun
994 @node Filter Functions
995 @subsection Process Filter Functions
996 @cindex filter function
997 @cindex process filter
999   A process @dfn{filter function} is a function that receives the
1000 standard output from the associated process.  If a process has a filter,
1001 then @emph{all} output from that process is passed to the filter.  The
1002 process buffer is used directly for output from the process only when
1003 there is no filter.
1005   The filter function can only be called when Emacs is waiting for
1006 something, because process output arrives only at such times.  Emacs
1007 waits when reading terminal input, in @code{sit-for} and
1008 @code{sleep-for} (@pxref{Waiting}), and in @code{accept-process-output}
1009 (@pxref{Accepting Output}).
1011   A filter function must accept two arguments: the associated process
1012 and a string, which is output just received from it.  The function is
1013 then free to do whatever it chooses with the output.
1015   Quitting is normally inhibited within a filter function---otherwise,
1016 the effect of typing @kbd{C-g} at command level or to quit a user
1017 command would be unpredictable.  If you want to permit quitting inside a
1018 filter function, bind @code{inhibit-quit} to @code{nil}.
1019 @xref{Quitting}.
1021   If an error happens during execution of a filter function, it is
1022 caught automatically, so that it doesn't stop the execution of whatever
1023 program was running when the filter function was started.  However, if
1024 @code{debug-on-error} is non-@code{nil}, the error-catching is turned
1025 off.  This makes it possible to use the Lisp debugger to debug the
1026 filter function.  @xref{Debugger}.
1028   Many filter functions sometimes or always insert the text in the
1029 process's buffer, mimicking the actions of Emacs when there is no
1030 filter.  Such filter functions need to use @code{set-buffer} in order to
1031 be sure to insert in that buffer.  To avoid setting the current buffer
1032 semipermanently, these filter functions must save and restore the
1033 current buffer.  They should also update the process marker, and in some
1034 cases update the value of point.  Here is how to do these things:
1036 @smallexample
1037 @group
1038 (defun ordinary-insertion-filter (proc string)
1039   (with-current-buffer (process-buffer proc)
1040     (let ((moving (= (point) (process-mark proc))))
1041 @end group
1042 @group
1043       (save-excursion
1044         ;; @r{Insert the text, advancing the process marker.}
1045         (goto-char (process-mark proc))
1046         (insert string)
1047         (set-marker (process-mark proc) (point)))
1048       (if moving (goto-char (process-mark proc))))))
1049 @end group
1050 @end smallexample
1052 @noindent
1053 The reason to use @code{with-current-buffer}, rather than using
1054 @code{save-excursion} to save and restore the current buffer, is so as
1055 to preserve the change in point made by the second call to
1056 @code{goto-char}.
1058   To make the filter force the process buffer to be visible whenever new
1059 text arrives, insert the following line just before the
1060 @code{with-current-buffer} construct:
1062 @smallexample
1063 (display-buffer (process-buffer proc))
1064 @end smallexample
1066   To force point to the end of the new output, no matter where it was
1067 previously, eliminate the variable @code{moving} and call
1068 @code{goto-char} unconditionally.
1070   In earlier Emacs versions, every filter function that did regular
1071 expression searching or matching had to explicitly save and restore the
1072 match data.  Now Emacs does this automatically for filter functions;
1073 they never need to do it explicitly.  @xref{Match Data}.
1075   A filter function that writes the output into the buffer of the
1076 process should check whether the buffer is still alive.  If it tries to
1077 insert into a dead buffer, it will get an error.  The expression
1078 @code{(buffer-name (process-buffer @var{process}))} returns @code{nil}
1079 if the buffer is dead.
1081   The output to the function may come in chunks of any size.  A program
1082 that produces the same output twice in a row may send it as one batch of
1083 200 characters one time, and five batches of 40 characters the next.  If
1084 the filter looks for certain text strings in the subprocess output, make
1085 sure to handle the case where one of these strings is split across two
1086 or more batches of output.
1088 @defun set-process-filter process filter
1089 This function gives @var{process} the filter function @var{filter}.  If
1090 @var{filter} is @code{nil}, it gives the process no filter.
1091 @end defun
1093 @defun process-filter process
1094 This function returns the filter function of @var{process}, or @code{nil}
1095 if it has none.
1096 @end defun
1098   Here is an example of use of a filter function:
1100 @smallexample
1101 @group
1102 (defun keep-output (process output)
1103    (setq kept (cons output kept)))
1104      @result{} keep-output
1105 @end group
1106 @group
1107 (setq kept nil)
1108      @result{} nil
1109 @end group
1110 @group
1111 (set-process-filter (get-process "shell") 'keep-output)
1112      @result{} keep-output
1113 @end group
1114 @group
1115 (process-send-string "shell" "ls ~/other\n")
1116      @result{} nil
1117 kept
1118      @result{} ("lewis@@slug[8] % "
1119 @end group
1120 @group
1121 "FINAL-W87-SHORT.MSS    backup.otl              kolstad.mss~
1122 address.txt             backup.psf              kolstad.psf
1123 backup.bib~             david.mss               resume-Dec-86.mss~
1124 backup.err              david.psf               resume-Dec.psf
1125 backup.mss              dland                   syllabus.mss
1127 "#backups.mss#          backup.mss~             kolstad.mss
1129 @end group
1130 @end smallexample
1132 @ignore   @c The code in this example doesn't show the right way to do things.
1133 Here is another, more realistic example, which demonstrates how to use
1134 the process mark to do insertion in the same fashion as is done when
1135 there is no filter function:
1137 @smallexample
1138 @group
1139 ;; @r{Insert input in the buffer specified by @code{my-shell-buffer}}
1140 ;;   @r{and make sure that buffer is shown in some window.}
1141 (defun my-process-filter (proc str)
1142   (let ((cur (selected-window))
1143         (pop-up-windows t))
1144     (pop-to-buffer my-shell-buffer)
1145 @end group
1146 @group
1147     (goto-char (point-max))
1148     (insert str)
1149     (set-marker (process-mark proc) (point-max))
1150     (select-window cur)))
1151 @end group
1152 @end smallexample
1153 @end ignore
1155 @node Accepting Output
1156 @subsection Accepting Output from Processes
1158   Output from asynchronous subprocesses normally arrives only while
1159 Emacs is waiting for some sort of external event, such as elapsed time
1160 or terminal input.  Occasionally it is useful in a Lisp program to
1161 explicitly permit output to arrive at a specific point, or even to wait
1162 until output arrives from a process.
1164 @defun accept-process-output &optional process seconds millisec
1165 This function allows Emacs to read pending output from processes.  The
1166 output is inserted in the associated buffers or given to their filter
1167 functions.  If @var{process} is non-@code{nil} then this function does
1168 not return until some output has been received from @var{process}.
1170 @c Emacs 19 feature
1171 The arguments @var{seconds} and @var{millisec} let you specify timeout
1172 periods.  The former specifies a period measured in seconds and the
1173 latter specifies one measured in milliseconds.  The two time periods
1174 thus specified are added together, and @code{accept-process-output}
1175 returns after that much time whether or not there has been any
1176 subprocess output.
1178 The argument @var{seconds} need not be an integer.  If it is a floating
1179 point number, this function waits for a fractional number of seconds.
1180 Some systems support only a whole number of seconds; on these systems,
1181 @var{seconds} is rounded down.
1183 Not all operating systems support waiting periods other than multiples
1184 of a second; on those that do not, you get an error if you specify
1185 nonzero @var{millisec}.
1187 The function @code{accept-process-output} returns non-@code{nil} if it
1188 did get some output, or @code{nil} if the timeout expired before output
1189 arrived.
1190 @end defun
1192 @node Sentinels
1193 @section Sentinels: Detecting Process Status Changes
1194 @cindex process sentinel
1195 @cindex sentinel
1197   A @dfn{process sentinel} is a function that is called whenever the
1198 associated process changes status for any reason, including signals
1199 (whether sent by Emacs or caused by the process's own actions) that
1200 terminate, stop, or continue the process.  The process sentinel is also
1201 called if the process exits.  The sentinel receives two arguments: the
1202 process for which the event occurred, and a string describing the type
1203 of event.
1205   The string describing the event looks like one of the following:
1207 @itemize @bullet
1208 @item 
1209 @code{"finished\n"}.
1211 @item
1212 @code{"exited abnormally with code @var{exitcode}\n"}.
1214 @item
1215 @code{"@var{name-of-signal}\n"}.
1217 @item
1218 @code{"@var{name-of-signal} (core dumped)\n"}.
1219 @end itemize
1221   A sentinel runs only while Emacs is waiting (e.g., for terminal input,
1222 or for time to elapse, or for process output).  This avoids the timing
1223 errors that could result from running them at random places in the
1224 middle of other Lisp programs.  A program can wait, so that sentinels
1225 will run, by calling @code{sit-for} or @code{sleep-for}
1226 (@pxref{Waiting}), or @code{accept-process-output} (@pxref{Accepting
1227 Output}).  Emacs also allows sentinels to run when the command loop is
1228 reading input.
1230   Quitting is normally inhibited within a sentinel---otherwise, the
1231 effect of typing @kbd{C-g} at command level or to quit a user command
1232 would be unpredictable.  If you want to permit quitting inside a
1233 sentinel, bind @code{inhibit-quit} to @code{nil}.  @xref{Quitting}.
1235   A sentinel that writes the output into the buffer of the process
1236 should check whether the buffer is still alive.  If it tries to insert
1237 into a dead buffer, it will get an error.  If the buffer is dead,
1238 @code{(buffer-name (process-buffer @var{process}))} returns @code{nil}.
1240   If an error happens during execution of a sentinel, it is caught
1241 automatically, so that it doesn't stop the execution of whatever
1242 programs was running when the sentinel was started.  However, if
1243 @code{debug-on-error} is non-@code{nil}, the error-catching is turned
1244 off.  This makes it possible to use the Lisp debugger to debug the
1245 sentinel.  @xref{Debugger}.
1247   In earlier Emacs versions, every sentinel that did regular expression
1248 searching or matching had to explicitly save and restore the match data.
1249 Now Emacs does this automatically for sentinels; they never need to do
1250 it explicitly.  @xref{Match Data}.
1252 @defun set-process-sentinel process sentinel
1253 This function associates @var{sentinel} with @var{process}.  If
1254 @var{sentinel} is @code{nil}, then the process will have no sentinel.
1255 The default behavior when there is no sentinel is to insert a message in
1256 the process's buffer when the process status changes.
1258 @smallexample
1259 @group
1260 (defun msg-me (process event)
1261    (princ
1262      (format "Process: %s had the event `%s'" process event)))
1263 (set-process-sentinel (get-process "shell") 'msg-me)
1264      @result{} msg-me
1265 @end group
1266 @group
1267 (kill-process (get-process "shell"))
1268      @print{} Process: #<process shell> had the event `killed'
1269      @result{} #<process shell>
1270 @end group
1271 @end smallexample
1272 @end defun
1274 @defun process-sentinel process
1275 This function returns the sentinel of @var{process}, or @code{nil} if it
1276 has none.
1277 @end defun
1279 @defun waiting-for-user-input-p
1280 While a sentinel or filter function is running, this function returns
1281 non-@code{nil} if Emacs was waiting for keyboard input from the user at
1282 the time the sentinel or filter function was called, @code{nil} if it
1283 was not.
1284 @end defun
1286 @node Transaction Queues
1287 @section Transaction Queues
1288 @cindex transaction queue
1290 You can use a @dfn{transaction queue} to communicate with a subprocess
1291 using transactions.  First use @code{tq-create} to create a transaction
1292 queue communicating with a specified process.  Then you can call
1293 @code{tq-enqueue} to send a transaction.
1295 @defun tq-create process
1296 This function creates and returns a transaction queue communicating with
1297 @var{process}.  The argument @var{process} should be a subprocess
1298 capable of sending and receiving streams of bytes.  It may be a child
1299 process, or it may be a TCP connection to a server, possibly on another
1300 machine.
1301 @end defun
1303 @defun tq-enqueue queue question regexp closure fn
1304 This function sends a transaction to queue @var{queue}.  Specifying the
1305 queue has the effect of specifying the subprocess to talk to.
1307 The argument @var{question} is the outgoing message that starts the
1308 transaction.  The argument @var{fn} is the function to call when the
1309 corresponding answer comes back; it is called with two arguments:
1310 @var{closure}, and the answer received.
1312 The argument @var{regexp} is a regular expression that should match the
1313 entire answer, but nothing less; that's how @code{tq-enqueue} determines
1314 where the answer ends.
1316 The return value of @code{tq-enqueue} itself is not meaningful.
1317 @end defun
1319 @defun tq-close queue
1320 Shut down transaction queue @var{queue}, waiting for all pending transactions
1321 to complete, and then terminate the connection or child process.
1322 @end defun
1324 Transaction queues are implemented by means of a filter function.
1325 @xref{Filter Functions}.
1327 @node Network
1328 @section Network Connections
1329 @cindex network connection
1330 @cindex TCP
1332   Emacs Lisp programs can open TCP network connections to other processes on
1333 the same machine or other machines.  A network connection is handled by Lisp
1334 much like a subprocess, and is represented by a process object.
1335 However, the process you are communicating with is not a child of the
1336 Emacs process, so you can't kill it or send it signals.  All you can do
1337 is send and receive data.  @code{delete-process} closes the connection,
1338 but does not kill the process at the other end; that process must decide
1339 what to do about closure of the connection.
1341   You can distinguish process objects representing network connections
1342 from those representing subprocesses with the @code{process-status}
1343 function.  It always returns either @code{open} or @code{closed} for a
1344 network connection, and it never returns either of those values for a
1345 real subprocess.  @xref{Process Information}.
1347 @defun open-network-stream name buffer-or-name host service
1348 This function opens a TCP connection for a service to a host.  It
1349 returns a process object to represent the connection.
1351 The @var{name} argument specifies the name for the process object.  It
1352 is modified as necessary to make it unique.
1354 The @var{buffer-or-name} argument is the buffer to associate with the
1355 connection.  Output from the connection is inserted in the buffer,
1356 unless you specify a filter function to handle the output.  If
1357 @var{buffer-or-name} is @code{nil}, it means that the connection is not
1358 associated with any buffer.
1360 The arguments @var{host} and @var{service} specify where to connect to;
1361 @var{host} is the host name (a string), and @var{service} is the name of
1362 a defined network service (a string) or a port number (an integer).
1363 @end defun