Patch by Martin.Lorentzson@telia.com.
[bpt/emacs.git] / lispref / processes.texi
CommitLineData
73804d4b
RS
1@c -*-texinfo-*-
2@c This is part of the GNU Emacs Lisp Reference Manual.
fd897522
GM
3@c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999
4@c Free Software Foundation, Inc.
73804d4b
RS
5@c See the file elisp.texi for copying conditions.
6@setfilename ../info/processes
969fe9b5 7@node Processes, Display, Abbrevs, Top
73804d4b
RS
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
15which a program can execute. Emacs runs in a process. Emacs Lisp
16programs can invoke other programs in processes of their own. These are
17called @dfn{subprocesses} or @dfn{child processes} of the Emacs process,
18which is their @dfn{parent process}.
19
20 A subprocess of Emacs may be @dfn{synchronous} or @dfn{asynchronous},
21depending on how it is created. When you create a synchronous
22subprocess, the Lisp program waits for the subprocess to terminate
23before continuing execution. When you create an asynchronous
24subprocess, it can run in parallel with the Lisp program. This kind of
25subprocess is represented within Emacs by a Lisp object which is also
26called a ``process''. Lisp programs can use this object to communicate
27with the subprocess or to control it. For example, you can send
28signals, obtain status information, receive output from the process, or
29send input to it.
30
31@defun processp object
32This 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.
a9f0a989 38* Shell Arguments:: Quoting an argument to pass it to a shell.
73804d4b
RS
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.
bfe721d1 49* Network:: Opening network connections.
73804d4b
RS
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
56a program. One of them, @code{start-process}, creates an asynchronous
57process and returns a process object (@pxref{Asynchronous Processes}).
58The other two, @code{call-process} and @code{call-process-region},
59create a synchronous process and do not return a process object
60(@pxref{Synchronous Processes}).
61
8241495d 62 Synchronous and asynchronous processes are explained in the following
73804d4b
RS
63sections. Since the three functions are all called in a similar
64fashion, 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
70program to be run. An error is signaled if the file is not found or
71cannot be executed. If the file name is relative, the variable
72@code{exec-path} contains a list of directories to search. Emacs
73initializes @code{exec-path} when it starts up, based on the value of
74the environment variable @code{PATH}. The standard file name
75constructs, @samp{~}, @samp{.}, and @samp{..}, are interpreted as usual
76in @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
79Expansion}).
80
81 Each of the subprocess-creating functions has a @var{buffer-or-name}
82argument which specifies where the standard output from the program will
1911e6e5
RS
83go. It should be a buffer or a buffer name; if it is a buffer name,
84that will create the buffer if it does not already exist. It can also
85be @code{nil}, which says to discard the output unless a filter function
86handles it. (@xref{Filter Functions}, and @ref{Read and Print}.)
87Normally, you should avoid having multiple processes send output to the
88same buffer because their output would be intermixed randomly.
73804d4b
RS
89
90@cindex program arguments
91 All three of the subprocess-creating functions have a @code{&rest}
92argument, @var{args}. The @var{args} must all be strings, and they are
93supplied to @var{program} as separate command line arguments. Wildcard
f9f59935
RS
94characters and other shell constructs have no special meanings in these
95strings, since the whole strings are passed directly to the specified
96program.
73804d4b 97
b22f3a19 98 @strong{Please note:} The argument @var{program} contains only the
73804d4b
RS
99name of the program; it may not contain any command-line arguments. You
100must 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
1911e6e5 106 The subprocess inherits its environment from Emacs, but you can
73804d4b
RS
107specify overrides for it with @code{process-environment}. @xref{System
108Environment}.
109
110@defvar exec-directory
a9042418 111@pindex movemail
8241495d 112The value of this variable is a string, the name of a directory that
1911e6e5 113contains programs that come with GNU Emacs, programs intended for Emacs
a9042418
RS
114to invoke. The program @code{movemail} is an example of such a program;
115Rmail uses it to fetch new mail from an inbox.
73804d4b
RS
116@end defvar
117
118@defopt exec-path
119The value of this variable is a list of directories to search for
120programs to run in subprocesses. Each element is either the name of a
121directory (i.e., a string), or @code{nil}, which stands for the default
122directory (which is the value of @code{default-directory}).
123@cindex program directories
124
125The 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
127file name.
128@end defopt
129
969fe9b5
RS
130@node Shell Arguments
131@section Shell Arguments
132
133 Lisp programs sometimes need to run a shell and give it a command
8241495d 134that contains file names that were specified by the user. These
969fe9b5
RS
135programs ought to be able to support any valid file name. But the shell
136gives special treatment to certain characters, and if these characters
137occur in the file name, they will confuse the shell. To handle these
138characters, use the function @code{shell-quote-argument}:
139
140@defun shell-quote-argument argument
141This function returns a string which represents, in shell syntax,
142an argument whose actual contents are @var{argument}. It should
143work reliably to concatenate the return value into a shell command
144and then pass it to a shell for execution.
145
146Precisely what this function does depends on your operating system. The
8241495d
RS
147function is designed to work with the syntax of your system's standard
148shell; if you use an unusual shell, you will need to redefine this
149function.
969fe9b5
RS
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"
8241495d
RS
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\""
969fe9b5
RS
159@end example
160
161Here's an example of using @code{shell-quote-argument} to construct
162a 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
73804d4b
RS
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
8241495d
RS
177process to terminate before continuing. Starting Dired on GNU or
178Unix@footnote{On other systems, Emacs uses a Lisp emulation of
179@code{ls}; see @ref{Contents of Directories}.} is an example of this: it
180runs @code{ls} in a synchronous process, then modifies the output
181slightly. Because the process is synchronous, the entire directory
182listing arrives in the buffer before Emacs tries to do anything with it.
73804d4b
RS
183
184 While Emacs waits for the synchronous subprocess to terminate, the
185user can quit by typing @kbd{C-g}. The first @kbd{C-g} tries to kill
186the subprocess with a @code{SIGINT} signal; but it waits until the
187subprocess actually terminates before quitting. If during that time the
188user types another @kbd{C-g}, that kills the subprocess instantly with
8241495d
RS
189@code{SIGKILL} and quits immediately (except on MS-DOS, where killing
190other processes doesn't work). @xref{Quitting}.
73804d4b 191
969fe9b5
RS
192 The synchronous subprocess functions return an indication of how the
193process terminated.
f9f59935
RS
194
195 The output from a synchronous subprocess is generally decoded using a
196coding system, much like text read from a file. The input sent to a
197subprocess by @code{call-process-region} is encoded using a coding
198system, much like text written into a file. @xref{Coding Systems}.
73804d4b 199
22697dac 200@defun call-process program &optional infile destination display &rest args
73804d4b
RS
201This function calls @var{program} in a separate process and waits for
202it to finish.
203
204The standard input for the process comes from file @var{infile} if
8241495d 205@var{infile} is not @code{nil}, and from the null device otherwise.
22697dac
KH
206The argument @var{destination} says where to put the process output.
207Here are the possibilities:
208
209@table @asis
210@item a buffer
211Insert the output in that buffer, before point. This includes both the
212standard output stream and the standard error stream of the process.
213
214@item a string
969fe9b5 215Insert the output in a buffer with that name, before point.
22697dac
KH
216
217@item @code{t}
218Insert the output in the current buffer, before point.
219
220@item @code{nil}
221Discard the output.
222
223@item 0
8241495d 224Discard the output, and return @code{nil} immediately without waiting
22697dac
KH
225for the subprocess to finish.
226
227In this case, the process is not truly synchronous, since it can run in
228parallel with Emacs; but you can think of it as synchronous in that
229Emacs is essentially finished with the subprocess as soon as this
230function returns.
231
8241495d
RS
232MS-DOS doesn't support asynchronous subprocesses, so this option doesn't
233work there.
234
1911e6e5 235@item @code{(@var{real-destination} @var{error-destination})}
22697dac
KH
236Keep the standard output stream separate from the standard error stream;
237deal with the ordinary output as specified by @var{real-destination},
238and dispose of the error output according to @var{error-destination}.
969fe9b5
RS
239If @var{error-destination} is @code{nil}, that means to discard the
240error output, @code{t} means mix it with the ordinary output, and a
241string specifies a file name to redirect error output into.
22697dac
KH
242
243You can't directly specify a buffer to put the error output in; that is
244too difficult to implement. But you can achieve this result by sending
245the error output to a temporary file and then inserting the file into a
246buffer.
247@end table
73804d4b
RS
248
249If @var{display} is non-@code{nil}, then @code{call-process} redisplays
a9f0a989
RS
250the buffer as output is inserted. (However, if the coding system chosen
251for decoding output is @code{undecided}, meaning deduce the encoding
252from the actual data, then redisplay sometimes cannot continue once
8241495d
RS
253non-@sc{ascii} characters are encountered. There are fundamental
254reasons why it is hard to fix this; see @ref{Output from Processes}.)
255
256Otherwise the function @code{call-process} does no redisplay, and the
257results become visible on the screen only when Emacs redisplays that
258buffer in the normal course of events.
73804d4b
RS
259
260The remaining arguments, @var{args}, are strings that specify command
261line arguments for the program.
262
263The value returned by @code{call-process} (unless you told it not to
264wait) indicates the reason for process termination. A number gives the
265exit status of the subprocess; 0 means success, and any other value
266means failure. If the process terminated with a signal,
267@code{call-process} returns a string describing the signal.
268
269In the examples below, the buffer @samp{foo} is current.
270
271@smallexample
272@group
273(call-process "pwd" nil t)
8241495d 274 @result{} 0
73804d4b
RS
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")
8241495d 283 @result{} 0
73804d4b
RS
284
285---------- Buffer: bar ----------
286lewis:5LTsHm66CSWKg:398:21:Bil Lewis:/user/lewis:/bin/csh
287
288---------- Buffer: bar ----------
289@end group
290@end smallexample
291
969fe9b5
RS
292Here is a good example of the use of @code{call-process}, which used to
293be found in the definition of @code{insert-directory}:
73804d4b
RS
294
295@smallexample
296@group
969fe9b5 297(call-process insert-directory-program nil t nil @var{switches}
73804d4b
RS
298 (if full-directory-p
299 (concat (file-name-as-directory file) ".")
300 file))
301@end group
302@end smallexample
303@end defun
304
22697dac 305@defun call-process-region start end program &optional delete destination display &rest args
8241495d 306This function sends the text from @var{start} to @var{end} as
73804d4b 307standard input to a process running @var{program}. It deletes the text
f9f59935
RS
308sent if @var{delete} is non-@code{nil}; this is useful when
309@var{destination} is @code{t}, to insert the output in the current
310buffer in place of the input.
73804d4b 311
22697dac 312The arguments @var{destination} and @var{display} control what to do
73804d4b
RS
313with the output from the subprocess, and whether to update the display
314as it comes in. For details, see the description of
22697dac 315@code{call-process}, above. If @var{destination} is the integer 0,
73804d4b 316@code{call-process-region} discards the output and returns @code{nil}
8241495d 317immediately, without waiting for the subprocess to finish (this only
4f939ab8 318works if asynchronous subprocesses are supported).
73804d4b
RS
319
320The remaining arguments, @var{args}, are strings that specify command
321line arguments for the program.
322
323The 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
325waiting; otherwise, a number or string which indicates how the
326subprocess terminated.
327
328In the following example, we use @code{call-process-region} to run the
329@code{cat} utility, with standard input being the first five characters
330in buffer @samp{foo} (the word @samp{input}). @code{cat} copies its
331standard input into its standard output. Since the argument
22697dac 332@var{destination} is @code{t}, this output is inserted in the current
73804d4b
RS
333buffer.
334
335@smallexample
336@group
337---------- Buffer: foo ----------
338input@point{}
339---------- Buffer: foo ----------
340@end group
341
342@group
343(call-process-region 1 6 "cat" nil t)
8241495d 344 @result{} 0
73804d4b
RS
345
346---------- Buffer: foo ----------
347inputinput@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
f9f59935
RS
368@defun shell-command-to-string command
369This function executes @var{command} (a string) as a shell command,
370then returns the command's output as a string.
371@end defun
372
73804d4b
RS
373@node Asynchronous Processes
374@section Creating an Asynchronous Process
375@cindex asynchronous subprocess
376
1911e6e5
RS
377 After an @dfn{asynchronous process} is created, Emacs and the subprocess
378both continue running immediately. The process thereafter runs
a9f0a989 379in parallel with Emacs, and the two can communicate with each other
8241495d 380using the functions described in the following sections. However,
a9f0a989
RS
381communication is only partially asynchronous: Emacs sends data to the
382process only when certain functions are called, and Emacs accepts data
383from the process only when Emacs is waiting for input or for a time
384delay.
385
386 Here we describe how to create an asynchronous process.
73804d4b
RS
387
388@defun start-process name buffer-or-name program &rest args
389This function creates a new asynchronous subprocess and starts the
390program @var{program} running in it. It returns a process object that
391stands for the new subprocess in Lisp. The argument @var{name}
392specifies the name for the process object; if a process with this name
f9f59935
RS
393already exists, then @var{name} is modified (by appending @samp{<1>},
394etc.) to be unique. The buffer @var{buffer-or-name} is the buffer to
73804d4b
RS
395associate with the process.
396
397The remaining arguments, @var{args}, are strings that specify command
398line arguments for the program.
399
400In the example below, the first process is started and runs (rather,
401sleeps) for 100 seconds. Meanwhile, the second process is started, and
402given the name @samp{my-process<1>} for the sake of uniqueness. It
403inserts the directory listing at the end of the buffer @samp{foo},
404before the first process finishes. Then it finishes, and a message to
405that effect is inserted in the buffer. Much later, the first process
406finishes, 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 ----------
419total 2
420lrwxrwxrwx 1 lewis 14 Jul 22 10:12 gnuemacs --> /emacs
421-rwxrwxrwx 1 lewis 19 Jul 30 21:02 lemon
422
423Process my-process<1> finished
424
425Process 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
432This function is like @code{start-process} except that it uses a shell
433to execute the specified command. The argument @var{command} is a shell
434command name, and @var{command-args} are the arguments for the shell
f9f59935
RS
435command. The variable @code{shell-file-name} specifies which shell to
436use.
969fe9b5
RS
437
438The point of running a program through the shell, rather than directly
439with @code{start-process}, is so that you can employ shell features such
440as wildcards in the arguments. It follows that if you include an
8241495d 441arbitrary user-specified arguments in the command, you should quote it
969fe9b5 442with @code{shell-quote-argument} first, so that any special shell
8241495d
RS
443characters do @emph{not} have their special shell meanings. @xref{Shell
444Arguments}.
73804d4b
RS
445@end defun
446
447@defvar process-connection-type
448@cindex pipes
449@cindex @sc{pty}s
450This variable controls the type of device used to communicate with
bfe721d1
KH
451asynchronous subprocesses. If it is non-@code{nil}, then @sc{pty}s are
452used, when available. Otherwise, pipes are used.
73804d4b
RS
453
454@sc{pty}s are usually preferable for processes visible to the user, as
455in Shell mode, because they allow job control (@kbd{C-c}, @kbd{C-z},
f9f59935
RS
456etc.) to work between the process and its children, whereas pipes do
457not. For subprocesses used for internal purposes by programs, it is
458often better to use a pipe, because they are more efficient. In
459addition, the total number of @sc{pty}s is limited on many systems and
460it is good not to waste them.
73804d4b 461
8241495d 462The value of @code{process-connection-type} is used when
73804d4b
RS
463@code{start-process} is called. So you can specify how to communicate
464with 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
22697dac
KH
473
474To determine whether a given subprocess actually got a pipe or a
475@sc{pty}, use the function @code{process-tty-name} (@pxref{Process
476Information}).
73804d4b
RS
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
484subprocess, and removes it from the list of active processes. It sends
485a signal to the subprocess to make the subprocess terminate, but this is
486not guaranteed to happen immediately. The process object itself
f23af701
RS
487continues to exist as long as other Lisp objects point to it. The
488process mark continues to point to the same place as before (usually
489into a buffer where output from the process was being inserted).
73804d4b
RS
490
491 You can delete a process explicitly at any time. Processes are
492deleted automatically after they terminate, but not necessarily right
493away. If you delete a terminated process explicitly before it is
494deleted automatically, no harm results.
495
1911e6e5 496@defopt delete-exited-processes
73804d4b
RS
497This variable controls automatic deletion of processes that have
498terminated (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
501they exit.
1911e6e5 502@end defopt
73804d4b
RS
503
504@defun delete-process name
505This function deletes the process associated with @var{name}, killing it
506with a @code{SIGHUP} signal. The argument @var{name} may be a process,
507the 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
1911e6e5
RS
517@defun process-kill-without-query process &optional do-query
518This function specifies whether Emacs should query the user if
519@var{process} is still running when Emacs is exited. If @var{do-query}
520is @code{nil}, the process will be deleted silently.
521Otherwise, Emacs will query about killing it.
522
523The value is @code{t} if the process was formerly set up to require
ebc6903b 524query, @code{nil} otherwise. A newly-created process always requires
1911e6e5 525query.
73804d4b
RS
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
542This command displays a listing of all living processes. In addition,
543it 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
548This 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
559This function returns the process named @var{name}, or @code{nil} if
560there 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
571This function returns the command that was executed to start
572@var{process}. This is a list of strings, the first string being the
573program executed and the rest of the strings being the arguments that
574were 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
585This function returns the @sc{pid} of @var{process}. This is an
78608595 586integer that distinguishes the process @var{process} from all other
73804d4b
RS
587processes 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
589process is started and remains constant as long as the process exists.
590@end defun
591
592@defun process-name process
593This function returns the name of @var{process}.
594@end defun
595
f9f59935
RS
596@defun process-contact process
597This 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
73804d4b
RS
602@defun process-status process-name
603This function returns the status of @var{process-name} as a symbol.
604The argument @var{process-name} must be a process, a buffer, a
605process name (string) or a buffer name (string).
606
607The possible values for an actual subprocess are:
608
609@table @code
610@item run
611for a process that is running.
612@item stop
613for a process that is stopped but continuable.
614@item exit
615for a process that has exited.
616@item signal
617for a process that has received a fatal signal.
618@item open
619for a network connection that is open.
620@item closed
621for a network connection that is closed. Once a connection
622is closed, you cannot reopen it, though you might be able to open
623a new connection to the same place.
624@item nil
625if @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
638x
639 @result{} #<process xx<1>>
640(process-status x)
641 @result{} exit
642@end group
643@end smallexample
644
645For a network connection, @code{process-status} returns one of the symbols
646@code{open} or @code{closed}. The latter means that the other side
647closed the connection, or Emacs did @code{delete-process}.
73804d4b
RS
648@end defun
649
650@defun process-exit-status process
651This function returns the exit status of @var{process} or the signal
652number that killed it. (Use the result of @code{process-status} to
653determine which of those it is.) If @var{process} has not yet
654terminated, the value is 0.
655@end defun
656
22697dac
KH
657@defun process-tty-name process
658This function returns the terminal name that @var{process} is using for
659its communication with Emacs---or @code{nil} if it is using pipes
660instead of a terminal (see @code{process-connection-type} in
661@ref{Asynchronous Processes}).
662@end defun
663
f9f59935
RS
664@defun process-coding-system process
665This function returns a cons cell describing the coding systems in use
666for decoding output from @var{process} and for encoding input to
667@var{process} (@pxref{Coding Systems}). The value has this form:
668
669@example
969fe9b5 670(@var{coding-system-for-decoding} . @var{coding-system-for-encoding})
f9f59935
RS
671@end example
672@end defun
673
f9f59935
RS
674@defun set-process-coding-system process decoding-system encoding-system
675This function specifies the coding systems to use for subsequent output
676from and input to @var{process}. It will use @var{decoding-system} to
677decode subprocess output, and @var{encoding-system} to encode subprocess
678input.
679@end defun
680
73804d4b
RS
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
686Emacs, which is done with the functions in this section. You must
687specify the process to send input to, and the input data to send. The
688data 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
692the other characters, to force them through. For most programs,
693these @sc{eof}s do no harm.
694
f9f59935 695 Subprocess input is normally encoded using a coding system before the
a9f0a989
RS
696subprocess 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
700the defaulting mechanism (@pxref{Default Coding Systems}).
f9f59935 701
b6954afd
RS
702 Sometimes the system is unable to accept input for that process,
703because the input buffer is full. When this happens, the send functions
704wait a short while, accepting output from subprocesses, and then try
705again. This gives the subprocess a chance to read more of its pending
706input and make space in the buffer. It also allows filters, sentinels
707and timers to run---so take account of that in writing your code.
708
73804d4b
RS
709@defun process-send-string process-name string
710This function sends @var{process-name} the contents of @var{string} as
711standard input. The argument @var{process-name} must be a process or
712the name of a process. If it is @code{nil}, the current buffer's
713process 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...
727introduction.texi syntax-tables.texi~
728introduction.texi~ text.texi
729introduction.txt text.texi~
730...
731---------- Buffer: *shell* ----------
732@end group
733@end smallexample
734@end defun
735
8241495d 736@defun process-send-region process-name start end
73804d4b
RS
737This 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
739a process name. (If it is @code{nil}, the current buffer's process is
740used.)
741
742An error is signaled unless both @var{start} and @var{end} are
743integers or markers that indicate positions in the current buffer. (It
744is unimportant which number is larger.)
8241495d 745@end defun
73804d4b
RS
746
747@defun process-send-eof &optional process-name
748 This function makes @var{process-name} see an end-of-file in its
749input. 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
752this function sends the @sc{eof} to the current buffer's process. An
753error 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
b6954afd
RS
765@defun process-running-child-p process
766@tindex process-running-child-p process
767This function will tell you whether a subprocess has given control of
768its terminal to its own child process. The value is @code{t} if this is
769true, or if Emacs cannot tell; it is @code{nil} if Emacs can be certain
770that this is not so.
771@end defun
772
73804d4b
RS
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
780activities. There are several different signals, each with its own
781meaning. The set of signals and their names is defined by the operating
782system. For example, the signal @code{SIGINT} means that the user has
783typed @kbd{C-c}, or that some analogous thing has happened.
784
785 Each signal has a standard effect on the subprocess. Most signals
786kill the subprocess, but some stop or resume execution instead. Most
787signals can optionally be handled by programs; if the program handles
788the signal, then we can say nothing in general about its effects.
789
790 You can send signals explicitly by calling the functions in this
791section. Emacs also sends signals automatically at certain times:
792killing a buffer sends a @code{SIGHUP} signal to all its associated
793processes; killing Emacs sends a @code{SIGHUP} signal to all remaining
794processes. (@code{SIGHUP} is a signal that usually indicates that the
795user 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
801one, or @code{nil}. If it is @code{nil}, the process defaults to the
802process 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
806when you are running a job-control shell as an Emacs subprocess. If it
807is non-@code{nil}, then the signal is sent to the current process-group
78608595 808of the terminal that Emacs uses to communicate with the subprocess. If
73804d4b
RS
809the process is a job-control shell, this means the shell's current
810subjob. If it is @code{nil}, the signal is sent to the process group of
811the immediate subprocess of Emacs. If the subprocess is a job-control
812shell, this is the shell itself.
813
814 The flag @var{current-group} has no effect when a pipe is used to
815communicate with the subprocess, because the operating system does not
816support the distinction in the case of pipes. For the same reason,
817job-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
821This function interrupts the process @var{process-name} by sending the
822signal @code{SIGINT}. Outside of Emacs, typing the ``interrupt
823character'' (normally @kbd{C-c} on some systems, and @code{DEL} on
824others) sends this signal. When the argument @var{current-group} is
825non-@code{nil}, you can think of this function as ``typing @kbd{C-c}''
826on the terminal by which Emacs talks to the subprocess.
827@end defun
828
829@defun kill-process &optional process-name current-group
830This function kills the process @var{process-name} by sending the
831signal @code{SIGKILL}. This signal kills the subprocess immediately,
832and cannot be handled by the subprocess.
833@end defun
834
835@defun quit-process &optional process-name current-group
836This function sends the signal @code{SIGQUIT} to the process
837@var{process-name}. This signal is the one sent by the ``quit
838character'' (usually @kbd{C-b} or @kbd{C-\}) when you are not inside
839Emacs.
840@end defun
841
842@defun stop-process &optional process-name current-group
843This function stops the process @var{process-name} by sending the
844signal @code{SIGTSTP}. Use @code{continue-process} to resume its
845execution.
846
969fe9b5 847Outside of Emacs, on systems with job control, the ``stop character''
f9f59935
RS
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
851subprocess.
73804d4b
RS
852@end defun
853
854@defun continue-process &optional process-name current-group
855This function resumes execution of the process @var{process} by sending
856it the signal @code{SIGCONT}. This presumes that @var{process-name} was
857stopped previously.
858@end defun
859
860@c Emacs 19 feature
861@defun signal-process pid signal
862This function sends a signal to process @var{pid}, which need not be
863a child of Emacs. The argument @var{signal} specifies which signal
864to 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
873its standard output stream. The output can be inserted in a buffer,
874which is called the associated buffer of the process, or a function
78608595
RS
875called the @dfn{filter function} can be called to act on the output. If
876the process has no buffer and no filter function, its output is
877discarded.
8f3efb4e 878
a9f0a989
RS
879 Output from a subprocess can arrive only while Emacs is waiting: when
880reading terminal input, in @code{sit-for} and @code{sleep-for}
881(@pxref{Waiting}), and in @code{accept-process-output} (@pxref{Accepting
882Output}). This minimizes the problem of timing errors that usually
883plague parallel programming. For example, you can safely create a
884process and only then specify its buffer or filter function; no output
885can arrive before you finish, if the code in between does not call any
886primitive that waits.
887
8f3efb4e
RS
888 It is impossible to separate the standard output and standard error
889streams of the subprocess, because Emacs normally spawns the subprocess
890inside a pseudo-TTY, and a pseudo-TTY has only one output channel. If
891you want to keep the output to those streams separate, you should
892redirect one of them to a file--for example, by using an appropriate
893shell command.
894
f9f59935
RS
895 Subprocess output is normally decoded using a coding system before the
896buffer or filter function receives it, much like text read from a file.
a9f0a989
RS
897You can use @code{set-process-coding-system} to specify which coding
898system to use (@pxref{Process Information}). Otherwise, the coding
899system comes from @code{coding-system-for-read}, if that is
900non-@code{nil}; or else from the defaulting mechanism (@pxref{Default
901Coding Systems}).
902
903 @strong{Warning:} Coding systems such as @code{undecided} which
904determine the coding system from the data do not work entirely reliably
905with asynchronous subprocess output. This is because Emacs has to
906process asynchronous subprocess output in batches, as it arrives. Emacs
907must try to detect the proper coding system from one batch at a time,
908and this does not always work. Therefore, if at all possible, use a
909coding system which determines both the character code conversion and
910the end of line conversion---that is, one like @code{latin-1-unix},
911rather than @code{undecided} or @code{latin-1}.
f9f59935 912
73804d4b
RS
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},
924which is an ordinary Emacs buffer that is used for two purposes: storing
925the output from the process, and deciding when to kill the process. You
926can also use the buffer to identify a process to operate on, since in
927normal practice only one process is associated with any given buffer.
928Many applications of processes also use the buffer for editing input to
929be sent to the process, but this is not built into Emacs Lisp.
930
931 Unless the process has a filter function (@pxref{Filter Functions}),
932its output is inserted in the associated buffer. The position to insert
78608595
RS
933the output is determined by the @code{process-mark}, which is then
934updated to point to the end of the text just inserted. Usually, but not
935always, the @code{process-mark} is at the end of the buffer.
73804d4b
RS
936
937@defun process-buffer process
938This 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
950This function returns the process marker for @var{process}, which is the
951marker that says where to insert output from the process.
952
953If @var{process} does not have a buffer, @code{process-mark} returns a
954marker that points nowhere.
955
956Insertion of process output in a buffer uses this marker to decide where
957to insert, and updates it to point after the inserted text. That is why
958successive batches of output are inserted consecutively.
959
960Filter functions normally should use this marker in the same fashion
961as is done by direct insertion of output in the buffer. A good
962example of a filter function that uses @code{process-mark} is found at
963the end of the following section.
964
965When the user is expected to enter input in the process buffer for
f9f59935
RS
966transmission to the process, the process marker separates the new input
967from previous output.
73804d4b
RS
968@end defun
969
970@defun set-process-buffer process buffer
971This function sets the buffer associated with @var{process} to
972@var{buffer}. If @var{buffer} is @code{nil}, the process becomes
973associated with no buffer.
974@end defun
975
976@defun get-buffer-process buffer-or-name
977This function returns the process associated with @var{buffer-or-name}.
978If there are several processes associated with it, then one is chosen.
f9f59935 979(Currently, the one chosen is the one most recently created.) It is
73804d4b
RS
980usually a bad idea to have more than one process associated with the
981same buffer.
982
983@smallexample
984@group
985(get-buffer-process "*shell*")
986 @result{} #<process shell>
987@end group
988@end smallexample
989
990Killing the process's buffer deletes the process, which kills the
991subprocess 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
1000standard output from the associated process. If a process has a filter,
78608595
RS
1001then @emph{all} output from that process is passed to the filter. The
1002process buffer is used directly for output from the process only when
1003there is no filter.
73804d4b 1004
a9f0a989
RS
1005 The filter function can only be called when Emacs is waiting for
1006something, because process output arrives only at such times. Emacs
1007waits 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
f9f59935
RS
1011 A filter function must accept two arguments: the associated process
1012and a string, which is output just received from it. The function is
1013then free to do whatever it chooses with the output.
73804d4b 1014
73804d4b
RS
1015 Quitting is normally inhibited within a filter function---otherwise,
1016the effect of typing @kbd{C-g} at command level or to quit a user
1017command would be unpredictable. If you want to permit quitting inside a
1018filter function, bind @code{inhibit-quit} to @code{nil}.
1019@xref{Quitting}.
1020
22697dac
KH
1021 If an error happens during execution of a filter function, it is
1022caught automatically, so that it doesn't stop the execution of whatever
eaac2be1 1023program was running when the filter function was started. However, if
22697dac
KH
1024@code{debug-on-error} is non-@code{nil}, the error-catching is turned
1025off. This makes it possible to use the Lisp debugger to debug the
1026filter function. @xref{Debugger}.
1027
73804d4b
RS
1028 Many filter functions sometimes or always insert the text in the
1029process's buffer, mimicking the actions of Emacs when there is no
1030filter. Such filter functions need to use @code{set-buffer} in order to
1031be sure to insert in that buffer. To avoid setting the current buffer
f9f59935
RS
1032semipermanently, these filter functions must save and restore the
1033current buffer. They should also update the process marker, and in some
1034cases update the value of point. Here is how to do these things:
73804d4b
RS
1035
1036@smallexample
1037@group
1038(defun ordinary-insertion-filter (proc string)
f9f59935
RS
1039 (with-current-buffer (process-buffer proc)
1040 (let ((moving (= (point) (process-mark proc))))
73804d4b
RS
1041@end group
1042@group
f9f59935
RS
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))))))
73804d4b
RS
1049@end group
1050@end smallexample
1051
1052@noindent
f9f59935
RS
1053The reason to use @code{with-current-buffer}, rather than using
1054@code{save-excursion} to save and restore the current buffer, is so as
1055to preserve the change in point made by the second call to
1056@code{goto-char}.
73804d4b
RS
1057
1058 To make the filter force the process buffer to be visible whenever new
1059text arrives, insert the following line just before the
f9f59935 1060@code{with-current-buffer} construct:
73804d4b
RS
1061
1062@smallexample
1063(display-buffer (process-buffer proc))
1064@end smallexample
1065
f9f59935
RS
1066 To force point to the end of the new output, no matter where it was
1067previously, eliminate the variable @code{moving} and call
73804d4b
RS
1068@code{goto-char} unconditionally.
1069
f9f59935
RS
1070 In earlier Emacs versions, every filter function that did regular
1071expression searching or matching had to explicitly save and restore the
1072match data. Now Emacs does this automatically for filter functions;
1073they never need to do it explicitly. @xref{Match Data}.
73804d4b
RS
1074
1075 A filter function that writes the output into the buffer of the
bfe721d1 1076process should check whether the buffer is still alive. If it tries to
f9f59935
RS
1077insert into a dead buffer, it will get an error. The expression
1078@code{(buffer-name (process-buffer @var{process}))} returns @code{nil}
1079if the buffer is dead.
73804d4b
RS
1080
1081 The output to the function may come in chunks of any size. A program
f9f59935
RS
1082that produces the same output twice in a row may send it as one batch of
1083200 characters one time, and five batches of 40 characters the next. If
1084the filter looks for certain text strings in the subprocess output, make
1085sure to handle the case where one of these strings is split across two
1086or more batches of output.
73804d4b
RS
1087
1088@defun set-process-filter process filter
1089This 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
1094This function returns the filter function of @var{process}, or @code{nil}
1095if 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
1117kept
1118 @result{} ("lewis@@slug[8] % "
1119@end group
1120@group
1121"FINAL-W87-SHORT.MSS backup.otl kolstad.mss~
1122address.txt backup.psf kolstad.psf
1123backup.bib~ david.mss resume-Dec-86.mss~
1124backup.err david.psf resume-Dec.psf
1125backup.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.
1133Here is another, more realistic example, which demonstrates how to use
1134the process mark to do insertion in the same fashion as is done when
1135there 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)
f9f59935
RS
1142 (let ((cur (selected-window))
1143 (pop-up-windows t))
1144 (pop-to-buffer my-shell-buffer)
73804d4b
RS
1145@end group
1146@group
f9f59935
RS
1147 (goto-char (point-max))
1148 (insert str)
1149 (set-marker (process-mark proc) (point-max))
1150 (select-window cur)))
73804d4b
RS
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
1159Emacs is waiting for some sort of external event, such as elapsed time
1160or terminal input. Occasionally it is useful in a Lisp program to
1161explicitly permit output to arrive at a specific point, or even to wait
1162until output arrives from a process.
1163
1164@defun accept-process-output &optional process seconds millisec
1165This function allows Emacs to read pending output from processes. The
1166output is inserted in the associated buffers or given to their filter
1167functions. If @var{process} is non-@code{nil} then this function does
1168not return until some output has been received from @var{process}.
1169
1170@c Emacs 19 feature
1171The arguments @var{seconds} and @var{millisec} let you specify timeout
1172periods. The former specifies a period measured in seconds and the
1173latter specifies one measured in milliseconds. The two time periods
1174thus specified are added together, and @code{accept-process-output}
1175returns after that much time whether or not there has been any
1176subprocess output.
1177
bfe721d1
KH
1178The argument @var{seconds} need not be an integer. If it is a floating
1179point number, this function waits for a fractional number of seconds.
1180Some systems support only a whole number of seconds; on these systems,
1911e6e5 1181@var{seconds} is rounded down.
bfe721d1 1182
73804d4b
RS
1183Not all operating systems support waiting periods other than multiples
1184of a second; on those that do not, you get an error if you specify
1185nonzero @var{millisec}.
1186
1187The function @code{accept-process-output} returns non-@code{nil} if it
1188did get some output, or @code{nil} if the timeout expired before output
1189arrived.
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
1198associated process changes status for any reason, including signals
1199(whether sent by Emacs or caused by the process's own actions) that
1200terminate, stop, or continue the process. The process sentinel is also
1201called if the process exits. The sentinel receives two arguments: the
1202process for which the event occurred, and a string describing the type
1203of 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,
1222or for time to elapse, or for process output). This avoids the timing
1223errors that could result from running them at random places in the
1224middle of other Lisp programs. A program can wait, so that sentinels
78608595
RS
1225will run, by calling @code{sit-for} or @code{sleep-for}
1226(@pxref{Waiting}), or @code{accept-process-output} (@pxref{Accepting
a9f0a989
RS
1227Output}). Emacs also allows sentinels to run when the command loop is
1228reading input.
73804d4b
RS
1229
1230 Quitting is normally inhibited within a sentinel---otherwise, the
1231effect of typing @kbd{C-g} at command level or to quit a user command
1232would be unpredictable. If you want to permit quitting inside a
1233sentinel, bind @code{inhibit-quit} to @code{nil}. @xref{Quitting}.
1234
1235 A sentinel that writes the output into the buffer of the process
bfe721d1 1236should check whether the buffer is still alive. If it tries to insert
73804d4b
RS
1237into 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
22697dac
KH
1240 If an error happens during execution of a sentinel, it is caught
1241automatically, so that it doesn't stop the execution of whatever
1242programs was running when the sentinel was started. However, if
1243@code{debug-on-error} is non-@code{nil}, the error-catching is turned
1244off. This makes it possible to use the Lisp debugger to debug the
1245sentinel. @xref{Debugger}.
1246
f9f59935
RS
1247 In earlier Emacs versions, every sentinel that did regular expression
1248searching or matching had to explicitly save and restore the match data.
1249Now Emacs does this automatically for sentinels; they never need to do
1250it explicitly. @xref{Match Data}.
bfe721d1 1251
73804d4b
RS
1252@defun set-process-sentinel process sentinel
1253This function associates @var{sentinel} with @var{process}. If
1254@var{sentinel} is @code{nil}, then the process will have no sentinel.
1255The default behavior when there is no sentinel is to insert a message in
1256the 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
1275This function returns the sentinel of @var{process}, or @code{nil} if it
1276has none.
1277@end defun
1278
1279@defun waiting-for-user-input-p
1280While a sentinel or filter function is running, this function returns
1281non-@code{nil} if Emacs was waiting for keyboard input from the user at
1282the time the sentinel or filter function was called, @code{nil} if it
1283was not.
1284@end defun
1285
1286@node Transaction Queues
1287@section Transaction Queues
1288@cindex transaction queue
1289
f9f59935
RS
1290You can use a @dfn{transaction queue} to communicate with a subprocess
1291using transactions. First use @code{tq-create} to create a transaction
1292queue communicating with a specified process. Then you can call
1293@code{tq-enqueue} to send a transaction.
73804d4b
RS
1294
1295@defun tq-create process
1296This function creates and returns a transaction queue communicating with
1297@var{process}. The argument @var{process} should be a subprocess
1298capable of sending and receiving streams of bytes. It may be a child
78608595 1299process, or it may be a TCP connection to a server, possibly on another
73804d4b
RS
1300machine.
1301@end defun
1302
1303@defun tq-enqueue queue question regexp closure fn
1304This function sends a transaction to queue @var{queue}. Specifying the
1305queue has the effect of specifying the subprocess to talk to.
1306
78608595 1307The argument @var{question} is the outgoing message that starts the
73804d4b
RS
1308transaction. The argument @var{fn} is the function to call when the
1309corresponding answer comes back; it is called with two arguments:
1310@var{closure}, and the answer received.
1311
6f6fd5ef
RS
1312The argument @var{regexp} is a regular expression that should match
1313text at the end of the entire answer, but nothing before; that's how
1314@code{tq-enqueue} determines where the answer ends.
73804d4b
RS
1315
1316The return value of @code{tq-enqueue} itself is not meaningful.
1317@end defun
1318
1319@defun tq-close queue
1320Shut down transaction queue @var{queue}, waiting for all pending transactions
1321to complete, and then terminate the connection or child process.
1322@end defun
1323
1324Transaction queues are implemented by means of a filter function.
1325@xref{Filter Functions}.
1326
bfe721d1
KH
1327@node Network
1328@section Network Connections
1329@cindex network connection
73804d4b
RS
1330@cindex TCP
1331
bfe721d1
KH
1332 Emacs Lisp programs can open TCP network connections to other processes on
1333the same machine or other machines. A network connection is handled by Lisp
73804d4b
RS
1334much like a subprocess, and is represented by a process object.
1335However, the process you are communicating with is not a child of the
1336Emacs process, so you can't kill it or send it signals. All you can do
1337is send and receive data. @code{delete-process} closes the connection,
1338but does not kill the process at the other end; that process must decide
1339what to do about closure of the connection.
1340
1341 You can distinguish process objects representing network connections
1342from those representing subprocesses with the @code{process-status}
bfe721d1
KH
1343function. It always returns either @code{open} or @code{closed} for a
1344network connection, and it never returns either of those values for a
1345real subprocess. @xref{Process Information}.
73804d4b
RS
1346
1347@defun open-network-stream name buffer-or-name host service
1348This function opens a TCP connection for a service to a host. It
1349returns a process object to represent the connection.
1350
1351The @var{name} argument specifies the name for the process object. It
1352is modified as necessary to make it unique.
1353
1354The @var{buffer-or-name} argument is the buffer to associate with the
1355connection. Output from the connection is inserted in the buffer,
1356unless 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
1358associated with any buffer.
1359
1360The 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
1362a defined network service (a string) or a port number (an integer).
1363@end defun