(set_properties, add_properties, remove_properties):
[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 Free Software Foundation, Inc.
4 @c See the file elisp.texi for copying conditions.
5 @setfilename ../info/processes
6 @node Processes, System Interface, Abbrevs, Top
7 @chapter Processes
8 @cindex child process
9 @cindex parent process
10 @cindex subprocess
11 @cindex process
12
13 In the terminology of operating systems, a @dfn{process} is a space in
14 which a program can execute. Emacs runs in a process. Emacs Lisp
15 programs can invoke other programs in processes of their own. These are
16 called @dfn{subprocesses} or @dfn{child processes} of the Emacs process,
17 which is their @dfn{parent process}.
18
19 A subprocess of Emacs may be @dfn{synchronous} or @dfn{asynchronous},
20 depending on how it is created. When you create a synchronous
21 subprocess, the Lisp program waits for the subprocess to terminate
22 before continuing execution. When you create an asynchronous
23 subprocess, it can run in parallel with the Lisp program. This kind of
24 subprocess is represented within Emacs by a Lisp object which is also
25 called a ``process''. Lisp programs can use this object to communicate
26 with the subprocess or to control it. For example, you can send
27 signals, obtain status information, receive output from the process, or
28 send input to it.
29
30 @defun processp object
31 This function returns @code{t} if @var{object} is a process,
32 @code{nil} otherwise.
33 @end defun
34
35 @menu
36 * Subprocess Creation:: Functions that start subprocesses.
37 * Synchronous Processes:: Details of using synchronous subprocesses.
38 * MS-DOS Subprocesses:: On MS-DOS, you must indicate text vs binary
39 for data sent to and from a subprocess.
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 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. If @var{buffer-or-name} is @code{nil}, that says to discard the
84 output unless a filter function handles it. (@xref{Filter Functions},
85 and @ref{Read and Print}.) Normally, you should avoid having multiple
86 processes send output to the same buffer because their output would be
87 intermixed randomly.
88
89 @cindex program arguments
90 All three of the subprocess-creating functions have a @code{&rest}
91 argument, @var{args}. The @var{args} must all be strings, and they are
92 supplied to @var{program} as separate command line arguments. Wildcard
93 characters and other shell constructs are not allowed in these strings,
94 since they are passed directly to the specified program.
95
96 @strong{Please note:} The argument @var{program} contains only the
97 name of the program; it may not contain any command-line arguments. You
98 must use @var{args} to provide those.
99
100 The subprocess gets its current directory from the value of
101 @code{default-directory} (@pxref{File Name Expansion}).
102
103 @cindex environment variables, subprocesses
104 The subprocess inherits its environment from Emacs; but you can
105 specify overrides for it with @code{process-environment}. @xref{System
106 Environment}.
107
108 @defvar exec-directory
109 @pindex wakeup
110 The value of this variable is the name of a directory (a string) that
111 contains programs that come with GNU Emacs, that are intended for Emacs
112 to invoke. The program @code{wakeup} is an example of such a program;
113 the @code{display-time} command uses it to get a reminder once per
114 minute.
115 @end defvar
116
117 @defopt exec-path
118 The value of this variable is a list of directories to search for
119 programs to run in subprocesses. Each element is either the name of a
120 directory (i.e., a string), or @code{nil}, which stands for the default
121 directory (which is the value of @code{default-directory}).
122 @cindex program directories
123
124 The value of @code{exec-path} is used by @code{call-process} and
125 @code{start-process} when the @var{program} argument is not an absolute
126 file name.
127 @end defopt
128
129 @node Synchronous Processes
130 @section Creating a Synchronous Process
131 @cindex synchronous subprocess
132
133 After a @dfn{synchronous process} is created, Emacs waits for the
134 process to terminate before continuing. Starting Dired is an example of
135 this: it runs @code{ls} in a synchronous process, then modifies the
136 output slightly. Because the process is synchronous, the entire
137 directory listing arrives in the buffer before Emacs tries to do
138 anything with it.
139
140 While Emacs waits for the synchronous subprocess to terminate, the
141 user can quit by typing @kbd{C-g}. The first @kbd{C-g} tries to kill
142 the subprocess with a @code{SIGINT} signal; but it waits until the
143 subprocess actually terminates before quitting. If during that time the
144 user types another @kbd{C-g}, that kills the subprocess instantly with
145 @code{SIGKILL} and quits immediately. @xref{Quitting}.
146
147 The synchronous subprocess functions returned @code{nil} in version
148 18. In version 19, they return an indication of how the process
149 terminated.
150
151 @defun call-process program &optional infile destination display &rest args
152 This function calls @var{program} in a separate process and waits for
153 it to finish.
154
155 The standard input for the process comes from file @var{infile} if
156 @var{infile} is not @code{nil} and from @file{/dev/null} otherwise.
157 The argument @var{destination} says where to put the process output.
158 Here are the possibilities:
159
160 @table @asis
161 @item a buffer
162 Insert the output in that buffer, before point. This includes both the
163 standard output stream and the standard error stream of the process.
164
165 @item a string
166 Find or create a buffer with that name, then insert
167 the output in that buffer, before point.
168
169 @item @code{t}
170 Insert the output in the current buffer, before point.
171
172 @item @code{nil}
173 Discard the output.
174
175 @item 0
176 Discard the output, and return immediately without waiting
177 for the subprocess to finish.
178
179 In this case, the process is not truly synchronous, since it can run in
180 parallel with Emacs; but you can think of it as synchronous in that
181 Emacs is essentially finished with the subprocess as soon as this
182 function returns.
183
184 @item (@var{real-destination} @var{error-destination})
185 Keep the standard output stream separate from the standard error stream;
186 deal with the ordinary output as specified by @var{real-destination},
187 and dispose of the error output according to @var{error-destination}.
188 The value @code{nil} means discard it, @code{t} means mix it with the
189 ordinary output, and a string specifies a file name to redirect error
190 output into.
191
192 You can't directly specify a buffer to put the error output in; that is
193 too difficult to implement. But you can achieve this result by sending
194 the error output to a temporary file and then inserting the file into a
195 buffer.
196 @end table
197
198 If @var{display} is non-@code{nil}, then @code{call-process} redisplays
199 the buffer as output is inserted. Otherwise the function does no
200 redisplay, and the results become visible on the screen only when Emacs
201 redisplays that buffer in the normal course of events.
202
203 The remaining arguments, @var{args}, are strings that specify command
204 line arguments for the program.
205
206 The value returned by @code{call-process} (unless you told it not to
207 wait) indicates the reason for process termination. A number gives the
208 exit status of the subprocess; 0 means success, and any other value
209 means failure. If the process terminated with a signal,
210 @code{call-process} returns a string describing the signal.
211
212 In the examples below, the buffer @samp{foo} is current.
213
214 @smallexample
215 @group
216 (call-process "pwd" nil t)
217 @result{} nil
218
219 ---------- Buffer: foo ----------
220 /usr/user/lewis/manual
221 ---------- Buffer: foo ----------
222 @end group
223
224 @group
225 (call-process "grep" nil "bar" nil "lewis" "/etc/passwd")
226 @result{} nil
227
228 ---------- Buffer: bar ----------
229 lewis:5LTsHm66CSWKg:398:21:Bil Lewis:/user/lewis:/bin/csh
230
231 ---------- Buffer: bar ----------
232 @end group
233 @end smallexample
234
235 The @code{insert-directory} function contains a good example of the use
236 of @code{call-process}:
237
238 @smallexample
239 @group
240 (call-process insert-directory-program nil t nil switches
241 (if full-directory-p
242 (concat (file-name-as-directory file) ".")
243 file))
244 @end group
245 @end smallexample
246 @end defun
247
248 @defun call-process-region start end program &optional delete destination display &rest args
249 This function sends the text between @var{start} to @var{end} as
250 standard input to a process running @var{program}. It deletes the text
251 sent if @var{delete} is non-@code{nil}; this is useful when @var{buffer}
252 is @code{t}, to insert the output in the current buffer.
253
254 The arguments @var{destination} and @var{display} control what to do
255 with the output from the subprocess, and whether to update the display
256 as it comes in. For details, see the description of
257 @code{call-process}, above. If @var{destination} is the integer 0,
258 @code{call-process-region} discards the output and returns @code{nil}
259 immediately, without waiting for the subprocess to finish.
260
261 The remaining arguments, @var{args}, are strings that specify command
262 line arguments for the program.
263
264 The return value of @code{call-process-region} is just like that of
265 @code{call-process}: @code{nil} if you told it to return without
266 waiting; otherwise, a number or string which indicates how the
267 subprocess terminated.
268
269 In the following example, we use @code{call-process-region} to run the
270 @code{cat} utility, with standard input being the first five characters
271 in buffer @samp{foo} (the word @samp{input}). @code{cat} copies its
272 standard input into its standard output. Since the argument
273 @var{destination} is @code{t}, this output is inserted in the current
274 buffer.
275
276 @smallexample
277 @group
278 ---------- Buffer: foo ----------
279 input@point{}
280 ---------- Buffer: foo ----------
281 @end group
282
283 @group
284 (call-process-region 1 6 "cat" nil t)
285 @result{} nil
286
287 ---------- Buffer: foo ----------
288 inputinput@point{}
289 ---------- Buffer: foo ----------
290 @end group
291 @end smallexample
292
293 The @code{shell-command-on-region} command uses
294 @code{call-process-region} like this:
295
296 @smallexample
297 @group
298 (call-process-region
299 start end
300 shell-file-name ; @r{Name of program.}
301 nil ; @r{Do not delete region.}
302 buffer ; @r{Send output to @code{buffer}.}
303 nil ; @r{No redisplay during output.}
304 "-c" command) ; @r{Arguments for the shell.}
305 @end group
306 @end smallexample
307 @end defun
308
309 @node MS-DOS Subprocesses
310 @section MS-DOS Subprocesses
311
312 On MS-DOS, you must indicate whether the data going to and from
313 a synchronous subprocess are text or binary. Text data requires
314 translation between the end-of-line convention used within Emacs
315 (a single newline character) and the convention used outside Emacs
316 (the two-character sequence, @sc{crlf}).
317
318 The variable @code{binary-process-input} applies to input sent to the
319 subprocess, and @code{binary-process-output} applies to output received
320 from it. A non-@code{nil} value means the data is non-text; @code{nil}
321 means the data is text, and calls for conversion.
322
323 @defvar binary-process-input
324 If this variable is @code{nil}, convert newlines to @sc{crlf} sequences in
325 the input to a synchronous subprocess.
326 @end defvar
327
328 @defvar binary-process-output
329 If this variable is @code{nil}, convert @sc{crlf} sequences to newlines in
330 the output from a synchronous subprocess.
331 @end defvar
332
333 @xref{Files and MS-DOS}, for related information.
334
335 @node Asynchronous Processes
336 @section Creating an Asynchronous Process
337 @cindex asynchronous subprocess
338
339 After an @dfn{asynchronous process} is created, Emacs and the Lisp
340 program both continue running immediately. The process may thereafter
341 run in parallel with Emacs, and the two may communicate with each other
342 using the functions described in following sections. Here we describe
343 how to create an asynchronous process with @code{start-process}.
344
345 @defun start-process name buffer-or-name program &rest args
346 This function creates a new asynchronous subprocess and starts the
347 program @var{program} running in it. It returns a process object that
348 stands for the new subprocess in Lisp. The argument @var{name}
349 specifies the name for the process object; if a process with this name
350 already exists, then @var{name} is modified (by adding @samp{<1>}, etc.)
351 to be unique. The buffer @var{buffer-or-name} is the buffer to
352 associate with the process.
353
354 The remaining arguments, @var{args}, are strings that specify command
355 line arguments for the program.
356
357 In the example below, the first process is started and runs (rather,
358 sleeps) for 100 seconds. Meanwhile, the second process is started, and
359 given the name @samp{my-process<1>} for the sake of uniqueness. It
360 inserts the directory listing at the end of the buffer @samp{foo},
361 before the first process finishes. Then it finishes, and a message to
362 that effect is inserted in the buffer. Much later, the first process
363 finishes, and another message is inserted in the buffer for it.
364
365 @smallexample
366 @group
367 (start-process "my-process" "foo" "sleep" "100")
368 @result{} #<process my-process>
369 @end group
370
371 @group
372 (start-process "my-process" "foo" "ls" "-l" "/user/lewis/bin")
373 @result{} #<process my-process<1>>
374
375 ---------- Buffer: foo ----------
376 total 2
377 lrwxrwxrwx 1 lewis 14 Jul 22 10:12 gnuemacs --> /emacs
378 -rwxrwxrwx 1 lewis 19 Jul 30 21:02 lemon
379
380 Process my-process<1> finished
381
382 Process my-process finished
383 ---------- Buffer: foo ----------
384 @end group
385 @end smallexample
386 @end defun
387
388 @defun start-process-shell-command name buffer-or-name command &rest command-args
389 This function is like @code{start-process} except that it uses a shell
390 to execute the specified command. The argument @var{command} is a shell
391 command name, and @var{command-args} are the arguments for the shell
392 command.
393 @end defun
394
395 @defvar process-connection-type
396 @cindex pipes
397 @cindex @sc{pty}s
398 This variable controls the type of device used to communicate with
399 asynchronous subprocesses. If it is non-@code{nil}, then @sc{pty}s are
400 used, when available. Otherwise, pipes are used.
401
402 @sc{pty}s are usually preferable for processes visible to the user, as
403 in Shell mode, because they allow job control (@kbd{C-c}, @kbd{C-z},
404 etc.) to work between the process and its children whereas pipes do not.
405 For subprocesses used for internal purposes by programs, it is often
406 better to use a pipe, because they are more efficient. In addition, the
407 total number of @sc{pty}s is limited on many systems and it is good not
408 to waste them.
409
410 The value @code{process-connection-type} is used when
411 @code{start-process} is called. So you can specify how to communicate
412 with one subprocess by binding the variable around the call to
413 @code{start-process}.
414
415 @smallexample
416 @group
417 (let ((process-connection-type nil)) ; @r{Use a pipe.}
418 (start-process @dots{}))
419 @end group
420 @end smallexample
421
422 To determine whether a given subprocess actually got a pipe or a
423 @sc{pty}, use the function @code{process-tty-name} (@pxref{Process
424 Information}).
425 @end defvar
426
427 @node Deleting Processes
428 @section Deleting Processes
429 @cindex deleting processes
430
431 @dfn{Deleting a process} disconnects Emacs immediately from the
432 subprocess, and removes it from the list of active processes. It sends
433 a signal to the subprocess to make the subprocess terminate, but this is
434 not guaranteed to happen immediately. The process object itself
435 continues to exist as long as other Lisp objects point to it. The
436 process mark continues to point to the same place as before (usually
437 into a buffer where output from the process was being inserted).
438
439 You can delete a process explicitly at any time. Processes are
440 deleted automatically after they terminate, but not necessarily right
441 away. If you delete a terminated process explicitly before it is
442 deleted automatically, no harm results.
443
444 @defvar delete-exited-processes
445 This variable controls automatic deletion of processes that have
446 terminated (due to calling @code{exit} or to a signal). If it is
447 @code{nil}, then they continue to exist until the user runs
448 @code{list-processes}. Otherwise, they are deleted immediately after
449 they exit.
450 @end defvar
451
452 @defun delete-process name
453 This function deletes the process associated with @var{name}, killing it
454 with a @code{SIGHUP} signal. The argument @var{name} may be a process,
455 the name of a process, a buffer, or the name of a buffer.
456
457 @smallexample
458 @group
459 (delete-process "*shell*")
460 @result{} nil
461 @end group
462 @end smallexample
463 @end defun
464
465 @defun process-kill-without-query process
466 This function declares that Emacs need not query the user if
467 @var{process} is still running when Emacs is exited. The process will
468 be deleted silently. The value is @code{t}.
469
470 @smallexample
471 @group
472 (process-kill-without-query (get-process "shell"))
473 @result{} t
474 @end group
475 @end smallexample
476 @end defun
477
478 @node Process Information
479 @section Process Information
480
481 Several functions return information about processes.
482 @code{list-processes} is provided for interactive use.
483
484 @deffn Command list-processes
485 This command displays a listing of all living processes. In addition,
486 it finally deletes any process whose status was @samp{Exited} or
487 @samp{Signaled}. It returns @code{nil}.
488 @end deffn
489
490 @defun process-list
491 This function returns a list of all processes that have not been deleted.
492
493 @smallexample
494 @group
495 (process-list)
496 @result{} (#<process display-time> #<process shell>)
497 @end group
498 @end smallexample
499 @end defun
500
501 @defun get-process name
502 This function returns the process named @var{name}, or @code{nil} if
503 there is none. An error is signaled if @var{name} is not a string.
504
505 @smallexample
506 @group
507 (get-process "shell")
508 @result{} #<process shell>
509 @end group
510 @end smallexample
511 @end defun
512
513 @defun process-command process
514 This function returns the command that was executed to start
515 @var{process}. This is a list of strings, the first string being the
516 program executed and the rest of the strings being the arguments that
517 were given to the program.
518
519 @smallexample
520 @group
521 (process-command (get-process "shell"))
522 @result{} ("/bin/csh" "-i")
523 @end group
524 @end smallexample
525 @end defun
526
527 @defun process-id process
528 This function returns the @sc{pid} of @var{process}. This is an
529 integer that distinguishes the process @var{process} from all other
530 processes running on the same computer at the current time. The
531 @sc{pid} of a process is chosen by the operating system kernel when the
532 process is started and remains constant as long as the process exists.
533 @end defun
534
535 @defun process-name process
536 This function returns the name of @var{process}.
537 @end defun
538
539 @defun process-status process-name
540 This function returns the status of @var{process-name} as a symbol.
541 The argument @var{process-name} must be a process, a buffer, a
542 process name (string) or a buffer name (string).
543
544 The possible values for an actual subprocess are:
545
546 @table @code
547 @item run
548 for a process that is running.
549 @item stop
550 for a process that is stopped but continuable.
551 @item exit
552 for a process that has exited.
553 @item signal
554 for a process that has received a fatal signal.
555 @item open
556 for a network connection that is open.
557 @item closed
558 for a network connection that is closed. Once a connection
559 is closed, you cannot reopen it, though you might be able to open
560 a new connection to the same place.
561 @item nil
562 if @var{process-name} is not the name of an existing process.
563 @end table
564
565 @smallexample
566 @group
567 (process-status "shell")
568 @result{} run
569 @end group
570 @group
571 (process-status (get-buffer "*shell*"))
572 @result{} run
573 @end group
574 @group
575 x
576 @result{} #<process xx<1>>
577 (process-status x)
578 @result{} exit
579 @end group
580 @end smallexample
581
582 For a network connection, @code{process-status} returns one of the symbols
583 @code{open} or @code{closed}. The latter means that the other side
584 closed the connection, or Emacs did @code{delete-process}.
585
586 In earlier Emacs versions (prior to version 19), the status of a network
587 connection was @code{run} if open, and @code{exit} if closed.
588 @end defun
589
590 @defun process-exit-status process
591 This function returns the exit status of @var{process} or the signal
592 number that killed it. (Use the result of @code{process-status} to
593 determine which of those it is.) If @var{process} has not yet
594 terminated, the value is 0.
595 @end defun
596
597 @defun process-tty-name process
598 This function returns the terminal name that @var{process} is using for
599 its communication with Emacs---or @code{nil} if it is using pipes
600 instead of a terminal (see @code{process-connection-type} in
601 @ref{Asynchronous Processes}).
602 @end defun
603
604 @node Input to Processes
605 @section Sending Input to Processes
606 @cindex process input
607
608 Asynchronous subprocesses receive input when it is sent to them by
609 Emacs, which is done with the functions in this section. You must
610 specify the process to send input to, and the input data to send. The
611 data appears on the ``standard input'' of the subprocess.
612
613 Some operating systems have limited space for buffered input in a
614 @sc{pty}. On these systems, Emacs sends an @sc{eof} periodically amidst
615 the other characters, to force them through. For most programs,
616 these @sc{eof}s do no harm.
617
618 @defun process-send-string process-name string
619 This function sends @var{process-name} the contents of @var{string} as
620 standard input. The argument @var{process-name} must be a process or
621 the name of a process. If it is @code{nil}, the current buffer's
622 process is used.
623
624 The function returns @code{nil}.
625
626 @smallexample
627 @group
628 (process-send-string "shell<1>" "ls\n")
629 @result{} nil
630 @end group
631
632
633 @group
634 ---------- Buffer: *shell* ----------
635 ...
636 introduction.texi syntax-tables.texi~
637 introduction.texi~ text.texi
638 introduction.txt text.texi~
639 ...
640 ---------- Buffer: *shell* ----------
641 @end group
642 @end smallexample
643 @end defun
644
645 @deffn Command process-send-region process-name start end
646 This function sends the text in the region defined by @var{start} and
647 @var{end} as standard input to @var{process-name}, which is a process or
648 a process name. (If it is @code{nil}, the current buffer's process is
649 used.)
650
651 An error is signaled unless both @var{start} and @var{end} are
652 integers or markers that indicate positions in the current buffer. (It
653 is unimportant which number is larger.)
654 @end deffn
655
656 @defun process-send-eof &optional process-name
657 This function makes @var{process-name} see an end-of-file in its
658 input. The @sc{eof} comes after any text already sent to it.
659
660 If @var{process-name} is not supplied, or if it is @code{nil}, then
661 this function sends the @sc{eof} to the current buffer's process. An
662 error is signaled if the current buffer has no process.
663
664 The function returns @var{process-name}.
665
666 @smallexample
667 @group
668 (process-send-eof "shell")
669 @result{} "shell"
670 @end group
671 @end smallexample
672 @end defun
673
674 @node Signals to Processes
675 @section Sending Signals to Processes
676 @cindex process signals
677 @cindex sending signals
678 @cindex signals
679
680 @dfn{Sending a signal} to a subprocess is a way of interrupting its
681 activities. There are several different signals, each with its own
682 meaning. The set of signals and their names is defined by the operating
683 system. For example, the signal @code{SIGINT} means that the user has
684 typed @kbd{C-c}, or that some analogous thing has happened.
685
686 Each signal has a standard effect on the subprocess. Most signals
687 kill the subprocess, but some stop or resume execution instead. Most
688 signals can optionally be handled by programs; if the program handles
689 the signal, then we can say nothing in general about its effects.
690
691 You can send signals explicitly by calling the functions in this
692 section. Emacs also sends signals automatically at certain times:
693 killing a buffer sends a @code{SIGHUP} signal to all its associated
694 processes; killing Emacs sends a @code{SIGHUP} signal to all remaining
695 processes. (@code{SIGHUP} is a signal that usually indicates that the
696 user hung up the phone.)
697
698 Each of the signal-sending functions takes two optional arguments:
699 @var{process-name} and @var{current-group}.
700
701 The argument @var{process-name} must be either a process, the name of
702 one, or @code{nil}. If it is @code{nil}, the process defaults to the
703 process associated with the current buffer. An error is signaled if
704 @var{process-name} does not identify a process.
705
706 The argument @var{current-group} is a flag that makes a difference
707 when you are running a job-control shell as an Emacs subprocess. If it
708 is non-@code{nil}, then the signal is sent to the current process-group
709 of the terminal that Emacs uses to communicate with the subprocess. If
710 the process is a job-control shell, this means the shell's current
711 subjob. If it is @code{nil}, the signal is sent to the process group of
712 the immediate subprocess of Emacs. If the subprocess is a job-control
713 shell, this is the shell itself.
714
715 The flag @var{current-group} has no effect when a pipe is used to
716 communicate with the subprocess, because the operating system does not
717 support the distinction in the case of pipes. For the same reason,
718 job-control shells won't work when a pipe is used. See
719 @code{process-connection-type} in @ref{Asynchronous Processes}.
720
721 @defun interrupt-process &optional process-name current-group
722 This function interrupts the process @var{process-name} by sending the
723 signal @code{SIGINT}. Outside of Emacs, typing the ``interrupt
724 character'' (normally @kbd{C-c} on some systems, and @code{DEL} on
725 others) sends this signal. When the argument @var{current-group} is
726 non-@code{nil}, you can think of this function as ``typing @kbd{C-c}''
727 on the terminal by which Emacs talks to the subprocess.
728 @end defun
729
730 @defun kill-process &optional process-name current-group
731 This function kills the process @var{process-name} by sending the
732 signal @code{SIGKILL}. This signal kills the subprocess immediately,
733 and cannot be handled by the subprocess.
734 @end defun
735
736 @defun quit-process &optional process-name current-group
737 This function sends the signal @code{SIGQUIT} to the process
738 @var{process-name}. This signal is the one sent by the ``quit
739 character'' (usually @kbd{C-b} or @kbd{C-\}) when you are not inside
740 Emacs.
741 @end defun
742
743 @defun stop-process &optional process-name current-group
744 This function stops the process @var{process-name} by sending the
745 signal @code{SIGTSTP}. Use @code{continue-process} to resume its
746 execution.
747
748 On systems with job control, the ``stop character'' (usually @kbd{C-z})
749 sends this signal (outside of Emacs). When @var{current-group} is
750 non-@code{nil}, you can think of this function as ``typing @kbd{C-z}''
751 on the terminal Emacs uses to communicate with the subprocess.
752 @end defun
753
754 @defun continue-process &optional process-name current-group
755 This function resumes execution of the process @var{process} by sending
756 it the signal @code{SIGCONT}. This presumes that @var{process-name} was
757 stopped previously.
758 @end defun
759
760 @c Emacs 19 feature
761 @defun signal-process pid signal
762 This function sends a signal to process @var{pid}, which need not be
763 a child of Emacs. The argument @var{signal} specifies which signal
764 to send; it should be an integer.
765 @end defun
766
767 @node Output from Processes
768 @section Receiving Output from Processes
769 @cindex process output
770 @cindex output from processes
771
772 There are two ways to receive the output that a subprocess writes to
773 its standard output stream. The output can be inserted in a buffer,
774 which is called the associated buffer of the process, or a function
775 called the @dfn{filter function} can be called to act on the output. If
776 the process has no buffer and no filter function, its output is
777 discarded.
778
779 @menu
780 * Process Buffers:: If no filter, output is put in a buffer.
781 * Filter Functions:: Filter functions accept output from the process.
782 * Accepting Output:: Explicitly permitting subprocess output.
783 Waiting for subprocess output.
784 @end menu
785
786 @node Process Buffers
787 @subsection Process Buffers
788
789 A process can (and usually does) have an @dfn{associated buffer},
790 which is an ordinary Emacs buffer that is used for two purposes: storing
791 the output from the process, and deciding when to kill the process. You
792 can also use the buffer to identify a process to operate on, since in
793 normal practice only one process is associated with any given buffer.
794 Many applications of processes also use the buffer for editing input to
795 be sent to the process, but this is not built into Emacs Lisp.
796
797 Unless the process has a filter function (@pxref{Filter Functions}),
798 its output is inserted in the associated buffer. The position to insert
799 the output is determined by the @code{process-mark}, which is then
800 updated to point to the end of the text just inserted. Usually, but not
801 always, the @code{process-mark} is at the end of the buffer.
802
803 @defun process-buffer process
804 This function returns the associated buffer of the process
805 @var{process}.
806
807 @smallexample
808 @group
809 (process-buffer (get-process "shell"))
810 @result{} #<buffer *shell*>
811 @end group
812 @end smallexample
813 @end defun
814
815 @defun process-mark process
816 This function returns the process marker for @var{process}, which is the
817 marker that says where to insert output from the process.
818
819 If @var{process} does not have a buffer, @code{process-mark} returns a
820 marker that points nowhere.
821
822 Insertion of process output in a buffer uses this marker to decide where
823 to insert, and updates it to point after the inserted text. That is why
824 successive batches of output are inserted consecutively.
825
826 Filter functions normally should use this marker in the same fashion
827 as is done by direct insertion of output in the buffer. A good
828 example of a filter function that uses @code{process-mark} is found at
829 the end of the following section.
830
831 When the user is expected to enter input in the process buffer for
832 transmission to the process, the process marker is useful for
833 distinguishing the new input from previous output.
834 @end defun
835
836 @defun set-process-buffer process buffer
837 This function sets the buffer associated with @var{process} to
838 @var{buffer}. If @var{buffer} is @code{nil}, the process becomes
839 associated with no buffer.
840 @end defun
841
842 @defun get-buffer-process buffer-or-name
843 This function returns the process associated with @var{buffer-or-name}.
844 If there are several processes associated with it, then one is chosen.
845 (Presently, the one chosen is the one most recently created.) It is
846 usually a bad idea to have more than one process associated with the
847 same buffer.
848
849 @smallexample
850 @group
851 (get-buffer-process "*shell*")
852 @result{} #<process shell>
853 @end group
854 @end smallexample
855
856 Killing the process's buffer deletes the process, which kills the
857 subprocess with a @code{SIGHUP} signal (@pxref{Signals to Processes}).
858 @end defun
859
860 @node Filter Functions
861 @subsection Process Filter Functions
862 @cindex filter function
863 @cindex process filter
864
865 A process @dfn{filter function} is a function that receives the
866 standard output from the associated process. If a process has a filter,
867 then @emph{all} output from that process is passed to the filter. The
868 process buffer is used directly for output from the process only when
869 there is no filter.
870
871 A filter function must accept two arguments: the associated process and
872 a string, which is the output. The function is then free to do whatever it
873 chooses with the output.
874
875 A filter function runs only while Emacs is waiting (e.g., for terminal
876 input, or for time to elapse, or for process output). This avoids the
877 timing errors that could result from running filters at random places in
878 the middle of other Lisp programs. You may explicitly cause Emacs to
879 wait, so that filter functions will run, by calling @code{sit-for} or
880 @code{sleep-for} (@pxref{Waiting}), or @code{accept-process-output}
881 (@pxref{Accepting Output}). Emacs is also waiting when the command loop
882 is reading input.
883
884 Quitting is normally inhibited within a filter function---otherwise,
885 the effect of typing @kbd{C-g} at command level or to quit a user
886 command would be unpredictable. If you want to permit quitting inside a
887 filter function, bind @code{inhibit-quit} to @code{nil}.
888 @xref{Quitting}.
889
890 If an error happens during execution of a filter function, it is
891 caught automatically, so that it doesn't stop the execution of whatever
892 program was running when the filter function was started. However, if
893 @code{debug-on-error} is non-@code{nil}, the error-catching is turned
894 off. This makes it possible to use the Lisp debugger to debug the
895 filter function. @xref{Debugger}.
896
897 Many filter functions sometimes or always insert the text in the
898 process's buffer, mimicking the actions of Emacs when there is no
899 filter. Such filter functions need to use @code{set-buffer} in order to
900 be sure to insert in that buffer. To avoid setting the current buffer
901 semipermanently, these filter functions must use @code{unwind-protect}
902 to make sure to restore the previous current buffer. They should also
903 update the process marker, and in some cases update the value of point.
904 Here is how to do these things:
905
906 @smallexample
907 @group
908 (defun ordinary-insertion-filter (proc string)
909 (let ((old-buffer (current-buffer)))
910 (unwind-protect
911 (let (moving)
912 (set-buffer (process-buffer proc))
913 (setq moving (= (point) (process-mark proc)))
914 @end group
915 @group
916 (save-excursion
917 ;; @r{Insert the text, moving the process-marker.}
918 (goto-char (process-mark proc))
919 (insert string)
920 (set-marker (process-mark proc) (point)))
921 (if moving (goto-char (process-mark proc))))
922 (set-buffer old-buffer))))
923 @end group
924 @end smallexample
925
926 @noindent
927 The reason to use an explicit @code{unwind-protect} rather than letting
928 @code{save-excursion} restore the current buffer is so as to preserve
929 the change in point made by @code{goto-char}.
930
931 To make the filter force the process buffer to be visible whenever new
932 text arrives, insert the following line just before the
933 @code{unwind-protect}:
934
935 @smallexample
936 (display-buffer (process-buffer proc))
937 @end smallexample
938
939 To force point to move to the end of the new output no matter where
940 it was previously, eliminate the variable @code{moving} and call
941 @code{goto-char} unconditionally.
942
943 In earlier Emacs versions, every filter function that did regexp
944 searching or matching had to explicitly save and restore the match data.
945 Now Emacs does this automatically; filter functions never need to do it
946 explicitly. @xref{Match Data}.
947
948 A filter function that writes the output into the buffer of the
949 process should check whether the buffer is still alive. If it tries to
950 insert into a dead buffer, it will get an error. If the buffer is dead,
951 @code{(buffer-name (process-buffer @var{process}))} returns @code{nil}.
952
953 The output to the function may come in chunks of any size. A program
954 that produces the same output twice in a row may send it as one batch
955 of 200 characters one time, and five batches of 40 characters the next.
956
957 @defun set-process-filter process filter
958 This function gives @var{process} the filter function @var{filter}. If
959 @var{filter} is @code{nil}, it gives the process no filter.
960 @end defun
961
962 @defun process-filter process
963 This function returns the filter function of @var{process}, or @code{nil}
964 if it has none.
965 @end defun
966
967 Here is an example of use of a filter function:
968
969 @smallexample
970 @group
971 (defun keep-output (process output)
972 (setq kept (cons output kept)))
973 @result{} keep-output
974 @end group
975 @group
976 (setq kept nil)
977 @result{} nil
978 @end group
979 @group
980 (set-process-filter (get-process "shell") 'keep-output)
981 @result{} keep-output
982 @end group
983 @group
984 (process-send-string "shell" "ls ~/other\n")
985 @result{} nil
986 kept
987 @result{} ("lewis@@slug[8] % "
988 @end group
989 @group
990 "FINAL-W87-SHORT.MSS backup.otl kolstad.mss~
991 address.txt backup.psf kolstad.psf
992 backup.bib~ david.mss resume-Dec-86.mss~
993 backup.err david.psf resume-Dec.psf
994 backup.mss dland syllabus.mss
995 "
996 "#backups.mss# backup.mss~ kolstad.mss
997 ")
998 @end group
999 @end smallexample
1000
1001 @ignore @c The code in this example doesn't show the right way to do things.
1002 Here is another, more realistic example, which demonstrates how to use
1003 the process mark to do insertion in the same fashion as is done when
1004 there is no filter function:
1005
1006 @smallexample
1007 @group
1008 ;; @r{Insert input in the buffer specified by @code{my-shell-buffer}}
1009 ;; @r{and make sure that buffer is shown in some window.}
1010 (defun my-process-filter (proc str)
1011 (let ((cur (selected-window))
1012 (pop-up-windows t))
1013 (pop-to-buffer my-shell-buffer)
1014 @end group
1015 @group
1016 (goto-char (point-max))
1017 (insert str)
1018 (set-marker (process-mark proc) (point-max))
1019 (select-window cur)))
1020 @end group
1021 @end smallexample
1022 @end ignore
1023
1024 @node Accepting Output
1025 @subsection Accepting Output from Processes
1026
1027 Output from asynchronous subprocesses normally arrives only while
1028 Emacs is waiting for some sort of external event, such as elapsed time
1029 or terminal input. Occasionally it is useful in a Lisp program to
1030 explicitly permit output to arrive at a specific point, or even to wait
1031 until output arrives from a process.
1032
1033 @defun accept-process-output &optional process seconds millisec
1034 This function allows Emacs to read pending output from processes. The
1035 output is inserted in the associated buffers or given to their filter
1036 functions. If @var{process} is non-@code{nil} then this function does
1037 not return until some output has been received from @var{process}.
1038
1039 @c Emacs 19 feature
1040 The arguments @var{seconds} and @var{millisec} let you specify timeout
1041 periods. The former specifies a period measured in seconds and the
1042 latter specifies one measured in milliseconds. The two time periods
1043 thus specified are added together, and @code{accept-process-output}
1044 returns after that much time whether or not there has been any
1045 subprocess output.
1046
1047 The argument @var{seconds} need not be an integer. If it is a floating
1048 point number, this function waits for a fractional number of seconds.
1049 Some systems support only a whole number of seconds; on these systems,
1050 @var{seconds} is rounded down. If the system doesn't support waiting
1051 fractions of a second, you get an error if you specify nonzero
1052 @var{millisec}.
1053
1054 Not all operating systems support waiting periods other than multiples
1055 of a second; on those that do not, you get an error if you specify
1056 nonzero @var{millisec}.
1057
1058 The function @code{accept-process-output} returns non-@code{nil} if it
1059 did get some output, or @code{nil} if the timeout expired before output
1060 arrived.
1061 @end defun
1062
1063 @node Sentinels
1064 @section Sentinels: Detecting Process Status Changes
1065 @cindex process sentinel
1066 @cindex sentinel
1067
1068 A @dfn{process sentinel} is a function that is called whenever the
1069 associated process changes status for any reason, including signals
1070 (whether sent by Emacs or caused by the process's own actions) that
1071 terminate, stop, or continue the process. The process sentinel is also
1072 called if the process exits. The sentinel receives two arguments: the
1073 process for which the event occurred, and a string describing the type
1074 of event.
1075
1076 The string describing the event looks like one of the following:
1077
1078 @itemize @bullet
1079 @item
1080 @code{"finished\n"}.
1081
1082 @item
1083 @code{"exited abnormally with code @var{exitcode}\n"}.
1084
1085 @item
1086 @code{"@var{name-of-signal}\n"}.
1087
1088 @item
1089 @code{"@var{name-of-signal} (core dumped)\n"}.
1090 @end itemize
1091
1092 A sentinel runs only while Emacs is waiting (e.g., for terminal input,
1093 or for time to elapse, or for process output). This avoids the timing
1094 errors that could result from running them at random places in the
1095 middle of other Lisp programs. A program can wait, so that sentinels
1096 will run, by calling @code{sit-for} or @code{sleep-for}
1097 (@pxref{Waiting}), or @code{accept-process-output} (@pxref{Accepting
1098 Output}). Emacs is also waiting when the command loop is reading input.
1099
1100 Quitting is normally inhibited within a sentinel---otherwise, the
1101 effect of typing @kbd{C-g} at command level or to quit a user command
1102 would be unpredictable. If you want to permit quitting inside a
1103 sentinel, bind @code{inhibit-quit} to @code{nil}. @xref{Quitting}.
1104
1105 A sentinel that writes the output into the buffer of the process
1106 should check whether the buffer is still alive. If it tries to insert
1107 into a dead buffer, it will get an error. If the buffer is dead,
1108 @code{(buffer-name (process-buffer @var{process}))} returns @code{nil}.
1109
1110 If an error happens during execution of a sentinel, it is caught
1111 automatically, so that it doesn't stop the execution of whatever
1112 programs was running when the sentinel was started. However, if
1113 @code{debug-on-error} is non-@code{nil}, the error-catching is turned
1114 off. This makes it possible to use the Lisp debugger to debug the
1115 sentinel. @xref{Debugger}.
1116
1117 In earlier Emacs versions, every sentinel that did regexp searching or
1118 matching had to explicitly save and restore the match data. Now Emacs
1119 does this automatically; sentinels never need to do it explicitly.
1120 @xref{Match Data}.
1121
1122 @defun set-process-sentinel process sentinel
1123 This function associates @var{sentinel} with @var{process}. If
1124 @var{sentinel} is @code{nil}, then the process will have no sentinel.
1125 The default behavior when there is no sentinel is to insert a message in
1126 the process's buffer when the process status changes.
1127
1128 @smallexample
1129 @group
1130 (defun msg-me (process event)
1131 (princ
1132 (format "Process: %s had the event `%s'" process event)))
1133 (set-process-sentinel (get-process "shell") 'msg-me)
1134 @result{} msg-me
1135 @end group
1136 @group
1137 (kill-process (get-process "shell"))
1138 @print{} Process: #<process shell> had the event `killed'
1139 @result{} #<process shell>
1140 @end group
1141 @end smallexample
1142 @end defun
1143
1144 @defun process-sentinel process
1145 This function returns the sentinel of @var{process}, or @code{nil} if it
1146 has none.
1147 @end defun
1148
1149 @defun waiting-for-user-input-p
1150 While a sentinel or filter function is running, this function returns
1151 non-@code{nil} if Emacs was waiting for keyboard input from the user at
1152 the time the sentinel or filter function was called, @code{nil} if it
1153 was not.
1154 @end defun
1155
1156 @node Transaction Queues
1157 @section Transaction Queues
1158 @cindex transaction queue
1159
1160 You can use a @dfn{transaction queue} for more convenient communication
1161 with subprocesses using transactions. First use @code{tq-create} to
1162 create a transaction queue communicating with a specified process. Then
1163 you can call @code{tq-enqueue} to send a transaction.
1164
1165 @defun tq-create process
1166 This function creates and returns a transaction queue communicating with
1167 @var{process}. The argument @var{process} should be a subprocess
1168 capable of sending and receiving streams of bytes. It may be a child
1169 process, or it may be a TCP connection to a server, possibly on another
1170 machine.
1171 @end defun
1172
1173 @defun tq-enqueue queue question regexp closure fn
1174 This function sends a transaction to queue @var{queue}. Specifying the
1175 queue has the effect of specifying the subprocess to talk to.
1176
1177 The argument @var{question} is the outgoing message that starts the
1178 transaction. The argument @var{fn} is the function to call when the
1179 corresponding answer comes back; it is called with two arguments:
1180 @var{closure}, and the answer received.
1181
1182 The argument @var{regexp} is a regular expression that should match the
1183 entire answer, but nothing less; that's how @code{tq-enqueue} determines
1184 where the answer ends.
1185
1186 The return value of @code{tq-enqueue} itself is not meaningful.
1187 @end defun
1188
1189 @defun tq-close queue
1190 Shut down transaction queue @var{queue}, waiting for all pending transactions
1191 to complete, and then terminate the connection or child process.
1192 @end defun
1193
1194 Transaction queues are implemented by means of a filter function.
1195 @xref{Filter Functions}.
1196
1197 @node Network
1198 @section Network Connections
1199 @cindex network connection
1200 @cindex TCP
1201
1202 Emacs Lisp programs can open TCP network connections to other processes on
1203 the same machine or other machines. A network connection is handled by Lisp
1204 much like a subprocess, and is represented by a process object.
1205 However, the process you are communicating with is not a child of the
1206 Emacs process, so you can't kill it or send it signals. All you can do
1207 is send and receive data. @code{delete-process} closes the connection,
1208 but does not kill the process at the other end; that process must decide
1209 what to do about closure of the connection.
1210
1211 You can distinguish process objects representing network connections
1212 from those representing subprocesses with the @code{process-status}
1213 function. It always returns either @code{open} or @code{closed} for a
1214 network connection, and it never returns either of those values for a
1215 real subprocess. @xref{Process Information}.
1216
1217 @defun open-network-stream name buffer-or-name host service
1218 This function opens a TCP connection for a service to a host. It
1219 returns a process object to represent the connection.
1220
1221 The @var{name} argument specifies the name for the process object. It
1222 is modified as necessary to make it unique.
1223
1224 The @var{buffer-or-name} argument is the buffer to associate with the
1225 connection. Output from the connection is inserted in the buffer,
1226 unless you specify a filter function to handle the output. If
1227 @var{buffer-or-name} is @code{nil}, it means that the connection is not
1228 associated with any buffer.
1229
1230 The arguments @var{host} and @var{service} specify where to connect to;
1231 @var{host} is the host name (a string), and @var{service} is the name of
1232 a defined network service (a string) or a port number (an integer).
1233 @end defun