(socket_status): New function.
[bpt/emacs.git] / lispref / processes.texi
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
13
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}.
19
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.
30
31 @defun processp object
32 This function returns @code{t} if @var{object} is a process,
33 @code{nil} otherwise.
34 @end defun
35
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
51
52 @node Subprocess Creation
53 @section Functions that Create Subprocesses
54
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}).
61
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.
65
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}).
80
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.
89
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.
97
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.
101
102 The subprocess gets its current directory from the value of
103 @code{default-directory} (@pxref{File Name Expansion}).
104
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}.
109
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
117
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
124
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
129
130 @node Shell Arguments
131 @section Shell Arguments
132
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}:
139
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.
145
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.
150
151 @example
152 ;; @r{This example shows the behavior on GNU and Unix systems.}
153 (shell-quote-argument "foo > bar")
154 @result{} "foo\\ \\>\\ bar"
155
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
160
161 Here's an example of using @code{shell-quote-argument} to construct
162 a shell command:
163
164 @example
165 (concat "diff -c "
166 (shell-quote-argument oldfile)
167 " "
168 (shell-quote-argument newfile))
169 @end example
170 @end defun
171
172 @node Synchronous Processes
173 @section Creating a Synchronous Process
174 @cindex synchronous subprocess
175
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.
183
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}.
191
192 The synchronous subprocess functions return an indication of how the
193 process terminated.
194
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}.
199
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.
203
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:
208
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.
213
214 @item a string
215 Insert the output in a buffer with that name, before point.
216
217 @item @code{t}
218 Insert the output in the current buffer, before point.
219
220 @item @code{nil}
221 Discard the output.
222
223 @item 0
224 Discard the output, and return @code{nil} immediately without waiting
225 for the subprocess to finish.
226
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.
231
232 MS-DOS doesn't support asynchronous subprocesses, so this option doesn't
233 work there.
234
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.
242
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
248
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}.)
255
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.
259
260 The remaining arguments, @var{args}, are strings that specify command
261 line arguments for the program.
262
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.
268
269 In the examples below, the buffer @samp{foo} is current.
270
271 @smallexample
272 @group
273 (call-process "pwd" nil t)
274 @result{} 0
275
276 ---------- Buffer: foo ----------
277 /usr/user/lewis/manual
278 ---------- Buffer: foo ----------
279 @end group
280
281 @group
282 (call-process "grep" nil "bar" nil "lewis" "/etc/passwd")
283 @result{} 0
284
285 ---------- Buffer: bar ----------
286 lewis:5LTsHm66CSWKg:398:21:Bil Lewis:/user/lewis:/bin/csh
287
288 ---------- Buffer: bar ----------
289 @end group
290 @end smallexample
291
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}:
294
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
304
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.
311
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).
319
320 The remaining arguments, @var{args}, are strings that specify command
321 line arguments for the program.
322
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.
327
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.
334
335 @smallexample
336 @group
337 ---------- Buffer: foo ----------
338 input@point{}
339 ---------- Buffer: foo ----------
340 @end group
341
342 @group
343 (call-process-region 1 6 "cat" nil t)
344 @result{} 0
345
346 ---------- Buffer: foo ----------
347 inputinput@point{}
348 ---------- Buffer: foo ----------
349 @end group
350 @end smallexample
351
352 The @code{shell-command-on-region} command uses
353 @code{call-process-region} like this:
354
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
367
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
372
373 @node Asynchronous Processes
374 @section Creating an Asynchronous Process
375 @cindex asynchronous subprocess
376
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.
385
386 Here we describe how to create an asynchronous process.
387
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.
396
397 The remaining arguments, @var{args}, are strings that specify command
398 line arguments for the program.
399
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.
407
408 @smallexample
409 @group
410 (start-process "my-process" "foo" "sleep" "100")
411 @result{} #<process my-process>
412 @end group
413
414 @group
415 (start-process "my-process" "foo" "ls" "-l" "/user/lewis/bin")
416 @result{} #<process my-process<1>>
417
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
422
423 Process my-process<1> finished
424
425 Process my-process finished
426 ---------- Buffer: foo ----------
427 @end group
428 @end smallexample
429 @end defun
430
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.
437
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
446
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.
453
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.
461
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}.
466
467 @smallexample
468 @group
469 (let ((process-connection-type nil)) ; @r{Use a pipe.}
470 (start-process @dots{}))
471 @end group
472 @end smallexample
473
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
478
479 @node Deleting Processes
480 @section Deleting Processes
481 @cindex deleting processes
482
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).
490
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.
495
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
503
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.
508
509 @smallexample
510 @group
511 (delete-process "*shell*")
512 @result{} nil
513 @end group
514 @end smallexample
515 @end defun
516
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.
522
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.
526
527 @smallexample
528 @group
529 (process-kill-without-query (get-process "shell"))
530 @result{} t
531 @end group
532 @end smallexample
533 @end defun
534
535 @node Process Information
536 @section Process Information
537
538 Several functions return information about processes.
539 @code{list-processes} is provided for interactive use.
540
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
546
547 @defun process-list
548 This function returns a list of all processes that have not been deleted.
549
550 @smallexample
551 @group
552 (process-list)
553 @result{} (#<process display-time> #<process shell>)
554 @end group
555 @end smallexample
556 @end defun
557
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.
561
562 @smallexample
563 @group
564 (get-process "shell")
565 @result{} #<process shell>
566 @end group
567 @end smallexample
568 @end defun
569
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.
575
576 @smallexample
577 @group
578 (process-command (get-process "shell"))
579 @result{} ("/bin/csh" "-i")
580 @end group
581 @end smallexample
582 @end defun
583
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
591
592 @defun process-name process
593 This function returns the name of @var{process}.
594 @end defun
595
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
601
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).
606
607 The possible values for an actual subprocess are:
608
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
627
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
638 x
639 @result{} #<process xx<1>>
640 (process-status x)
641 @result{} exit
642 @end group
643 @end smallexample
644
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
649
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
656
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
663
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:
668
669 @example
670 (@var{coding-system-for-decoding} . @var{coding-system-for-encoding})
671 @end example
672 @end defun
673
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
680
681 @node Input to Processes
682 @section Sending Input to Processes
683 @cindex process input
684
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.
689
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.
694
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}).
701
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.
708
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.
714
715 The function returns @code{nil}.
716
717 @smallexample
718 @group
719 (process-send-string "shell<1>" "ls\n")
720 @result{} nil
721 @end group
722
723
724 @group
725 ---------- Buffer: *shell* ----------
726 ...
727 introduction.texi syntax-tables.texi~
728 introduction.texi~ text.texi
729 introduction.txt text.texi~
730 ...
731 ---------- Buffer: *shell* ----------
732 @end group
733 @end smallexample
734 @end defun
735
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.)
741
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
746
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.
750
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.
754
755 The function returns @var{process-name}.
756
757 @smallexample
758 @group
759 (process-send-eof "shell")
760 @result{} "shell"
761 @end group
762 @end smallexample
763 @end defun
764
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
772
773 @node Signals to Processes
774 @section Sending Signals to Processes
775 @cindex process signals
776 @cindex sending signals
777 @cindex signals
778
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.
784
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.
789
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.)
796
797 Each of the signal-sending functions takes two optional arguments:
798 @var{process-name} and @var{current-group}.
799
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.
804
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.
813
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}.
819
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
828
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
834
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
841
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.
846
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
853
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
859
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
866
867 @node Output from Processes
868 @section Receiving Output from Processes
869 @cindex process output
870 @cindex output from processes
871
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.
878
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.
887
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.
894
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}).
902
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}.
912
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
919
920 @node Process Buffers
921 @subsection Process Buffers
922
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.
930
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.
936
937 @defun process-buffer process
938 This function returns the associated buffer of the process
939 @var{process}.
940
941 @smallexample
942 @group
943 (process-buffer (get-process "shell"))
944 @result{} #<buffer *shell*>
945 @end group
946 @end smallexample
947 @end defun
948
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.
952
953 If @var{process} does not have a buffer, @code{process-mark} returns a
954 marker that points nowhere.
955
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.
959
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.
964
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
969
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
975
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.
982
983 @smallexample
984 @group
985 (get-buffer-process "*shell*")
986 @result{} #<process shell>
987 @end group
988 @end smallexample
989
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
993
994 @node Filter Functions
995 @subsection Process Filter Functions
996 @cindex filter function
997 @cindex process filter
998
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.
1004
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}).
1010
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.
1014
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}.
1020
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}.
1027
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:
1035
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
1051
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}.
1057
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:
1061
1062 @smallexample
1063 (display-buffer (process-buffer proc))
1064 @end smallexample
1065
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.
1069
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}.
1074
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.
1080
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.
1087
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
1092
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
1097
1098 Here is an example of use of a filter function:
1099
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
1126 "
1127 "#backups.mss# backup.mss~ kolstad.mss
1128 ")
1129 @end group
1130 @end smallexample
1131
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:
1136
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
1154
1155 @node Accepting Output
1156 @subsection Accepting Output from Processes
1157
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.
1163
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}.
1169
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.
1177
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.
1182
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}.
1186
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
1191
1192 @node Sentinels
1193 @section Sentinels: Detecting Process Status Changes
1194 @cindex process sentinel
1195 @cindex sentinel
1196
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.
1204
1205 The string describing the event looks like one of the following:
1206
1207 @itemize @bullet
1208 @item
1209 @code{"finished\n"}.
1210
1211 @item
1212 @code{"exited abnormally with code @var{exitcode}\n"}.
1213
1214 @item
1215 @code{"@var{name-of-signal}\n"}.
1216
1217 @item
1218 @code{"@var{name-of-signal} (core dumped)\n"}.
1219 @end itemize
1220
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.
1229
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}.
1234
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}.
1239
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}.
1246
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}.
1251
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.
1257
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
1273
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
1278
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
1285
1286 @node Transaction Queues
1287 @section Transaction Queues
1288 @cindex transaction queue
1289
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.
1294
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
1302
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.
1306
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.
1311
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.
1315
1316 The return value of @code{tq-enqueue} itself is not meaningful.
1317 @end defun
1318
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
1323
1324 Transaction queues are implemented by means of a filter function.
1325 @xref{Filter Functions}.
1326
1327 @node Network
1328 @section Network Connections
1329 @cindex network connection
1330 @cindex TCP
1331
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.
1340
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}.
1346
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.
1350
1351 The @var{name} argument specifies the name for the process object. It
1352 is modified as necessary to make it unique.
1353
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.
1359
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