Merge from emacs-23
[bpt/emacs.git] / doc / lispref / processes.texi
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001,
4 @c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
5 @c Free Software Foundation, Inc.
6 @c See the file elisp.texi for copying conditions.
7 @setfilename ../../info/processes
8 @node Processes, Display, Abbrevs, Top
9 @chapter Processes
10 @cindex child process
11 @cindex parent process
12 @cindex subprocess
13 @cindex process
14
15 In the terminology of operating systems, a @dfn{process} is a space in
16 which a program can execute. Emacs runs in a process. Emacs Lisp
17 programs can invoke other programs in processes of their own. These are
18 called @dfn{subprocesses} or @dfn{child processes} of the Emacs process,
19 which is their @dfn{parent process}.
20
21 A subprocess of Emacs may be @dfn{synchronous} or @dfn{asynchronous},
22 depending on how it is created. When you create a synchronous
23 subprocess, the Lisp program waits for the subprocess to terminate
24 before continuing execution. When you create an asynchronous
25 subprocess, it can run in parallel with the Lisp program. This kind of
26 subprocess is represented within Emacs by a Lisp object which is also
27 called a ``process.'' Lisp programs can use this object to communicate
28 with the subprocess or to control it. For example, you can send
29 signals, obtain status information, receive output from the process, or
30 send input to it.
31
32 @defun processp object
33 This function returns @code{t} if @var{object} represents an Emacs
34 subprocess, @code{nil} otherwise.
35 @end defun
36
37 In addition to subprocesses of the current Emacs session, you can
38 also access other processes running on your machine. @xref{System
39 Processes}.
40
41 @menu
42 * Subprocess Creation:: Functions that start subprocesses.
43 * Shell Arguments:: Quoting an argument to pass it to a shell.
44 * Synchronous Processes:: Details of using synchronous subprocesses.
45 * Asynchronous Processes:: Starting up an asynchronous subprocess.
46 * Deleting Processes:: Eliminating an asynchronous subprocess.
47 * Process Information:: Accessing run-status and other attributes.
48 * Input to Processes:: Sending input to an asynchronous subprocess.
49 * Signals to Processes:: Stopping, continuing or interrupting
50 an asynchronous subprocess.
51 * Output from Processes:: Collecting output from an asynchronous subprocess.
52 * Sentinels:: Sentinels run when process run-status changes.
53 * Query Before Exit:: Whether to query if exiting will kill a process.
54 * System Processes:: Accessing other processes running on your system.
55 * Transaction Queues:: Transaction-based communication with subprocesses.
56 * Network:: Opening network connections.
57 * Network Servers:: Network servers let Emacs accept net connections.
58 * Datagrams:: UDP network connections.
59 * Low-Level Network:: Lower-level but more general function
60 to create connections and servers.
61 * Misc Network:: Additional relevant functions for net connections.
62 * Serial Ports:: Communicating with serial ports.
63 * Byte Packing:: Using bindat to pack and unpack binary data.
64 @end menu
65
66 @node Subprocess Creation
67 @section Functions that Create Subprocesses
68
69 There are three primitives that create a new subprocess in which to run
70 a program. One of them, @code{start-process}, creates an asynchronous
71 process and returns a process object (@pxref{Asynchronous Processes}).
72 The other two, @code{call-process} and @code{call-process-region},
73 create a synchronous process and do not return a process object
74 (@pxref{Synchronous Processes}).
75
76 Synchronous and asynchronous processes are explained in the following
77 sections. Since the three functions are all called in a similar
78 fashion, their common arguments are described here.
79
80 @cindex execute program
81 @cindex @code{PATH} environment variable
82 @cindex @code{HOME} environment variable
83 In all cases, the function's @var{program} argument specifies the
84 program to be run. An error is signaled if the file is not found or
85 cannot be executed. If the file name is relative, the variable
86 @code{exec-path} contains a list of directories to search. Emacs
87 initializes @code{exec-path} when it starts up, based on the value of
88 the environment variable @code{PATH}. The standard file name
89 constructs, @samp{~}, @samp{.}, and @samp{..}, are interpreted as
90 usual in @code{exec-path}, but environment variable substitutions
91 (@samp{$HOME}, etc.) are not recognized; use
92 @code{substitute-in-file-name} to perform them (@pxref{File Name
93 Expansion}). @code{nil} in this list refers to
94 @code{default-directory}.
95
96 Executing a program can also try adding suffixes to the specified
97 name:
98
99 @defvar exec-suffixes
100 This variable is a list of suffixes (strings) to try adding to the
101 specified program file name. The list should include @code{""} if you
102 want the name to be tried exactly as specified. The default value is
103 system-dependent.
104 @end defvar
105
106 @strong{Please note:} The argument @var{program} contains only the
107 name of the program; it may not contain any command-line arguments. You
108 must use @var{args} to provide those.
109
110 Each of the subprocess-creating functions has a @var{buffer-or-name}
111 argument which specifies where the standard output from the program will
112 go. It should be a buffer or a buffer name; if it is a buffer name,
113 that will create the buffer if it does not already exist. It can also
114 be @code{nil}, which says to discard the output unless a filter function
115 handles it. (@xref{Filter Functions}, and @ref{Read and Print}.)
116 Normally, you should avoid having multiple processes send output to the
117 same buffer because their output would be intermixed randomly.
118
119 @cindex program arguments
120 All three of the subprocess-creating functions have a @code{&rest}
121 argument, @var{args}. The @var{args} must all be strings, and they are
122 supplied to @var{program} as separate command line arguments. Wildcard
123 characters and other shell constructs have no special meanings in these
124 strings, since the strings are passed directly to the specified program.
125
126 The subprocess gets its current directory from the value of
127 @code{default-directory} (@pxref{File Name Expansion}).
128
129 @cindex environment variables, subprocesses
130 The subprocess inherits its environment from Emacs, but you can
131 specify overrides for it with @code{process-environment}. @xref{System
132 Environment}.
133
134 @defvar exec-directory
135 @pindex movemail
136 The value of this variable is a string, the name of a directory that
137 contains programs that come with GNU Emacs, programs intended for Emacs
138 to invoke. The program @code{movemail} is an example of such a program;
139 Rmail uses it to fetch new mail from an inbox.
140 @end defvar
141
142 @defopt exec-path
143 The value of this variable is a list of directories to search for
144 programs to run in subprocesses. Each element is either the name of a
145 directory (i.e., a string), or @code{nil}, which stands for the default
146 directory (which is the value of @code{default-directory}).
147 @cindex program directories
148
149 The value of @code{exec-path} is used by @code{call-process} and
150 @code{start-process} when the @var{program} argument is not an absolute
151 file name.
152 @end defopt
153
154 @node Shell Arguments
155 @section Shell Arguments
156 @cindex arguments for shell commands
157 @cindex shell command arguments
158
159 Lisp programs sometimes need to run a shell and give it a command
160 that contains file names that were specified by the user. These
161 programs ought to be able to support any valid file name. But the shell
162 gives special treatment to certain characters, and if these characters
163 occur in the file name, they will confuse the shell. To handle these
164 characters, use the function @code{shell-quote-argument}:
165
166 @defun shell-quote-argument argument
167 This function returns a string which represents, in shell syntax,
168 an argument whose actual contents are @var{argument}. It should
169 work reliably to concatenate the return value into a shell command
170 and then pass it to a shell for execution.
171
172 Precisely what this function does depends on your operating system. The
173 function is designed to work with the syntax of your system's standard
174 shell; if you use an unusual shell, you will need to redefine this
175 function.
176
177 @example
178 ;; @r{This example shows the behavior on GNU and Unix systems.}
179 (shell-quote-argument "foo > bar")
180 @result{} "foo\\ \\>\\ bar"
181
182 ;; @r{This example shows the behavior on MS-DOS and MS-Windows.}
183 (shell-quote-argument "foo > bar")
184 @result{} "\"foo > bar\""
185 @end example
186
187 Here's an example of using @code{shell-quote-argument} to construct
188 a shell command:
189
190 @example
191 (concat "diff -c "
192 (shell-quote-argument oldfile)
193 " "
194 (shell-quote-argument newfile))
195 @end example
196 @end defun
197
198 @cindex quoting and unquoting command-line arguments
199 @cindex minibuffer input, and command-line arguments
200 @cindex @code{call-process}, command-line arguments from minibuffer
201 @cindex @code{start-process}, command-line arguments from minibuffer
202 The following two functions are useful for combining a list of
203 individual command-line argument strings into a single string, and
204 taking a string apart into a list of individual command-line
205 arguments. These functions are mainly intended to be used for
206 converting user input in the minibuffer, a Lisp string, into a list of
207 string arguments to be passed to @code{call-process} or
208 @code{start-process}, or for the converting such lists of arguments in
209 a single Lisp string to be presented in the minibuffer or echo area.
210
211 @defun split-string-and-unquote string &optional separators
212 This function splits @var{string} into substrings at matches for the
213 regular expression @var{separators}, like @code{split-string} does
214 (@pxref{Creating Strings}); in addition, it removes quoting from the
215 substrings. It then makes a list of the substrings and returns it.
216
217 If @var{separators} is omitted or @code{nil}, it defaults to
218 @code{"\\s-+"}, which is a regular expression that matches one or more
219 characters with whitespace syntax (@pxref{Syntax Class Table}).
220
221 This function supports two types of quoting: enclosing a whole string
222 in double quotes @code{"@dots{}"}, and quoting individual characters
223 with a backslash escape @samp{\}. The latter is also used in Lisp
224 strings, so this function can handle those as well.
225 @end defun
226
227 @defun combine-and-quote-strings list-of-strings &optional separator
228 This function concatenates @var{list-of-strings} into a single string,
229 quoting each string as necessary. It also sticks the @var{separator}
230 string between each pair of strings; if @var{separator} is omitted or
231 @code{nil}, it defaults to @code{" "}. The return value is the
232 resulting string.
233
234 The strings in @var{list-of-strings} that need quoting are those that
235 include @var{separator} as their substring. Quoting a string encloses
236 it in double quotes @code{"@dots{}"}. In the simplest case, if you
237 are consing a command from the individual command-line arguments,
238 every argument that includes embedded blanks will be quoted.
239 @end defun
240
241 @node Synchronous Processes
242 @section Creating a Synchronous Process
243 @cindex synchronous subprocess
244
245 After a @dfn{synchronous process} is created, Emacs waits for the
246 process to terminate before continuing. Starting Dired on GNU or
247 Unix@footnote{On other systems, Emacs uses a Lisp emulation of
248 @code{ls}; see @ref{Contents of Directories}.} is an example of this: it
249 runs @code{ls} in a synchronous process, then modifies the output
250 slightly. Because the process is synchronous, the entire directory
251 listing arrives in the buffer before Emacs tries to do anything with it.
252
253 While Emacs waits for the synchronous subprocess to terminate, the
254 user can quit by typing @kbd{C-g}. The first @kbd{C-g} tries to kill
255 the subprocess with a @code{SIGINT} signal; but it waits until the
256 subprocess actually terminates before quitting. If during that time the
257 user types another @kbd{C-g}, that kills the subprocess instantly with
258 @code{SIGKILL} and quits immediately (except on MS-DOS, where killing
259 other processes doesn't work). @xref{Quitting}.
260
261 The synchronous subprocess functions return an indication of how the
262 process terminated.
263
264 The output from a synchronous subprocess is generally decoded using a
265 coding system, much like text read from a file. The input sent to a
266 subprocess by @code{call-process-region} is encoded using a coding
267 system, much like text written into a file. @xref{Coding Systems}.
268
269 @defun call-process program &optional infile destination display &rest args
270 This function calls @var{program} in a separate process and waits for
271 it to finish.
272
273 The standard input for the process comes from file @var{infile} if
274 @var{infile} is not @code{nil}, and from the null device otherwise.
275 The argument @var{destination} says where to put the process output.
276 Here are the possibilities:
277
278 @table @asis
279 @item a buffer
280 Insert the output in that buffer, before point. This includes both the
281 standard output stream and the standard error stream of the process.
282
283 @item a string
284 Insert the output in a buffer with that name, before point.
285
286 @item @code{t}
287 Insert the output in the current buffer, before point.
288
289 @item @code{nil}
290 Discard the output.
291
292 @item 0
293 Discard the output, and return @code{nil} immediately without waiting
294 for the subprocess to finish.
295
296 In this case, the process is not truly synchronous, since it can run in
297 parallel with Emacs; but you can think of it as synchronous in that
298 Emacs is essentially finished with the subprocess as soon as this
299 function returns.
300
301 MS-DOS doesn't support asynchronous subprocesses, so this option doesn't
302 work there.
303
304 @item @code{(@var{real-destination} @var{error-destination})}
305 Keep the standard output stream separate from the standard error stream;
306 deal with the ordinary output as specified by @var{real-destination},
307 and dispose of the error output according to @var{error-destination}.
308 If @var{error-destination} is @code{nil}, that means to discard the
309 error output, @code{t} means mix it with the ordinary output, and a
310 string specifies a file name to redirect error output into.
311
312 You can't directly specify a buffer to put the error output in; that is
313 too difficult to implement. But you can achieve this result by sending
314 the error output to a temporary file and then inserting the file into a
315 buffer.
316 @end table
317
318 If @var{display} is non-@code{nil}, then @code{call-process} redisplays
319 the buffer as output is inserted. (However, if the coding system chosen
320 for decoding output is @code{undecided}, meaning deduce the encoding
321 from the actual data, then redisplay sometimes cannot continue once
322 non-@acronym{ASCII} characters are encountered. There are fundamental
323 reasons why it is hard to fix this; see @ref{Output from Processes}.)
324
325 Otherwise the function @code{call-process} does no redisplay, and the
326 results become visible on the screen only when Emacs redisplays that
327 buffer in the normal course of events.
328
329 The remaining arguments, @var{args}, are strings that specify command
330 line arguments for the program.
331
332 The value returned by @code{call-process} (unless you told it not to
333 wait) indicates the reason for process termination. A number gives the
334 exit status of the subprocess; 0 means success, and any other value
335 means failure. If the process terminated with a signal,
336 @code{call-process} returns a string describing the signal.
337
338 In the examples below, the buffer @samp{foo} is current.
339
340 @smallexample
341 @group
342 (call-process "pwd" nil t)
343 @result{} 0
344
345 ---------- Buffer: foo ----------
346 /usr/user/lewis/manual
347 ---------- Buffer: foo ----------
348 @end group
349
350 @group
351 (call-process "grep" nil "bar" nil "lewis" "/etc/passwd")
352 @result{} 0
353
354 ---------- Buffer: bar ----------
355 lewis:5LTsHm66CSWKg:398:21:Bil Lewis:/user/lewis:/bin/csh
356
357 ---------- Buffer: bar ----------
358 @end group
359 @end smallexample
360
361 Here is a good example of the use of @code{call-process}, which used to
362 be found in the definition of @code{insert-directory}:
363
364 @smallexample
365 @group
366 (call-process insert-directory-program nil t nil @var{switches}
367 (if full-directory-p
368 (concat (file-name-as-directory file) ".")
369 file))
370 @end group
371 @end smallexample
372 @end defun
373
374 @defun process-file program &optional infile buffer display &rest args
375 This function processes files synchronously in a separate process. It
376 is similar to @code{call-process} but may invoke a file handler based
377 on the value of the variable @code{default-directory}. The current
378 working directory of the subprocess is @code{default-directory}.
379
380 The arguments are handled in almost the same way as for
381 @code{call-process}, with the following differences:
382
383 Some file handlers may not support all combinations and forms of the
384 arguments @var{infile}, @var{buffer}, and @var{display}. For example,
385 some file handlers might behave as if @var{display} were @code{nil},
386 regardless of the value actually passed. As another example, some
387 file handlers might not support separating standard output and error
388 output by way of the @var{buffer} argument.
389
390 If a file handler is invoked, it determines the program to run based
391 on the first argument @var{program}. For instance, consider that a
392 handler for remote files is invoked. Then the path that is used for
393 searching the program might be different than @code{exec-path}.
394
395 The second argument @var{infile} may invoke a file handler. The file
396 handler could be different from the handler chosen for the
397 @code{process-file} function itself. (For example,
398 @code{default-directory} could be on a remote host, whereas
399 @var{infile} is on another remote host. Or @code{default-directory}
400 could be non-special, whereas @var{infile} is on a remote host.)
401
402 If @var{buffer} is a list of the form @code{(@var{real-destination}
403 @var{error-destination})}, and @var{error-destination} names a file,
404 then the same remarks as for @var{infile} apply.
405
406 The remaining arguments (@var{args}) will be passed to the process
407 verbatim. Emacs is not involved in processing file names that are
408 present in @var{args}. To avoid confusion, it may be best to avoid
409 absolute file names in @var{args}, but rather to specify all file
410 names as relative to @code{default-directory}. The function
411 @code{file-relative-name} is useful for constructing such relative
412 file names.
413 @end defun
414
415 @defvar process-file-side-effects
416 This variable indicates, whether a call of @code{process-file} changes
417 remote files.
418
419 Per default, this variable is always set to @code{t}, meaning that a
420 call of @code{process-file} could potentially change any file on a
421 remote host. When set to @code{nil}, a file handler could optimize
422 its behaviour with respect to remote file attributes caching.
423
424 This variable should never be changed by @code{setq}. Instead of, it
425 shall be set only by let-binding.
426 @end defvar
427
428 @defun call-process-region start end program &optional delete destination display &rest args
429 This function sends the text from @var{start} to @var{end} as
430 standard input to a process running @var{program}. It deletes the text
431 sent if @var{delete} is non-@code{nil}; this is useful when
432 @var{destination} is @code{t}, to insert the output in the current
433 buffer in place of the input.
434
435 The arguments @var{destination} and @var{display} control what to do
436 with the output from the subprocess, and whether to update the display
437 as it comes in. For details, see the description of
438 @code{call-process}, above. If @var{destination} is the integer 0,
439 @code{call-process-region} discards the output and returns @code{nil}
440 immediately, without waiting for the subprocess to finish (this only
441 works if asynchronous subprocesses are supported).
442
443 The remaining arguments, @var{args}, are strings that specify command
444 line arguments for the program.
445
446 The return value of @code{call-process-region} is just like that of
447 @code{call-process}: @code{nil} if you told it to return without
448 waiting; otherwise, a number or string which indicates how the
449 subprocess terminated.
450
451 In the following example, we use @code{call-process-region} to run the
452 @code{cat} utility, with standard input being the first five characters
453 in buffer @samp{foo} (the word @samp{input}). @code{cat} copies its
454 standard input into its standard output. Since the argument
455 @var{destination} is @code{t}, this output is inserted in the current
456 buffer.
457
458 @smallexample
459 @group
460 ---------- Buffer: foo ----------
461 input@point{}
462 ---------- Buffer: foo ----------
463 @end group
464
465 @group
466 (call-process-region 1 6 "cat" nil t)
467 @result{} 0
468
469 ---------- Buffer: foo ----------
470 inputinput@point{}
471 ---------- Buffer: foo ----------
472 @end group
473 @end smallexample
474
475 The @code{shell-command-on-region} command uses
476 @code{call-process-region} like this:
477
478 @smallexample
479 @group
480 (call-process-region
481 start end
482 shell-file-name ; @r{Name of program.}
483 nil ; @r{Do not delete region.}
484 buffer ; @r{Send output to @code{buffer}.}
485 nil ; @r{No redisplay during output.}
486 "-c" command) ; @r{Arguments for the shell.}
487 @end group
488 @end smallexample
489 @end defun
490
491 @defun call-process-shell-command command &optional infile destination display &rest args
492 This function executes the shell command @var{command} synchronously
493 in a separate process. The final arguments @var{args} are additional
494 arguments to add at the end of @var{command}. The other arguments
495 are handled as in @code{call-process}.
496 @end defun
497
498 @defun process-file-shell-command command &optional infile destination display &rest args
499 This function is like @code{call-process-shell-command}, but uses
500 @code{process-file} internally. Depending on @code{default-directory},
501 @var{command} can be executed also on remote hosts.
502 @end defun
503
504 @defun shell-command-to-string command
505 This function executes @var{command} (a string) as a shell command,
506 then returns the command's output as a string.
507 @end defun
508
509 @defun process-lines program &rest args
510 This function runs @var{program} in a separate process, waits for it
511 to finish, and returns its output as a list of strings. Each string
512 in the list holds a single line of text output by the program; the
513 end-of-line characters are stripped from each line. The arguments
514 beyond @var{program}, @var{args}, are strings that specify
515 command-line arguments with which to run the program.
516
517 If @var{program} exits with a non-zero exit status, this function
518 signals an error.
519
520 This function works by calling @code{call-process}, so program output
521 is decoded in the same way as for @code{call-process}.
522 @end defun
523
524 @node Asynchronous Processes
525 @section Creating an Asynchronous Process
526 @cindex asynchronous subprocess
527
528 After an @dfn{asynchronous process} is created, Emacs and the subprocess
529 both continue running immediately. The process thereafter runs
530 in parallel with Emacs, and the two can communicate with each other
531 using the functions described in the following sections. However,
532 communication is only partially asynchronous: Emacs sends data to the
533 process only when certain functions are called, and Emacs accepts data
534 from the process only when Emacs is waiting for input or for a time
535 delay.
536
537 Here we describe how to create an asynchronous process.
538
539 @defun start-process name buffer-or-name program &rest args
540 This function creates a new asynchronous subprocess and starts the
541 program @var{program} running in it. It returns a process object that
542 stands for the new subprocess in Lisp. The argument @var{name}
543 specifies the name for the process object; if a process with this name
544 already exists, then @var{name} is modified (by appending @samp{<1>},
545 etc.) to be unique. The buffer @var{buffer-or-name} is the buffer to
546 associate with the process.
547
548 The remaining arguments, @var{args}, are strings that specify command
549 line arguments for the program.
550
551 In the example below, the first process is started and runs (rather,
552 sleeps) for 100 seconds. Meanwhile, the second process is started, and
553 given the name @samp{my-process<1>} for the sake of uniqueness. It
554 inserts the directory listing at the end of the buffer @samp{foo},
555 before the first process finishes. Then it finishes, and a message to
556 that effect is inserted in the buffer. Much later, the first process
557 finishes, and another message is inserted in the buffer for it.
558
559 @smallexample
560 @group
561 (start-process "my-process" "foo" "sleep" "100")
562 @result{} #<process my-process>
563 @end group
564
565 @group
566 (start-process "my-process" "foo" "ls" "-l" "/user/lewis/bin")
567 @result{} #<process my-process<1>>
568
569 ---------- Buffer: foo ----------
570 total 2
571 lrwxrwxrwx 1 lewis 14 Jul 22 10:12 gnuemacs --> /emacs
572 -rwxrwxrwx 1 lewis 19 Jul 30 21:02 lemon
573
574 Process my-process<1> finished
575
576 Process my-process finished
577 ---------- Buffer: foo ----------
578 @end group
579 @end smallexample
580 @end defun
581
582 @defun start-file-process name buffer-or-name program &rest args
583 Like @code{start-process}, this function starts a new asynchronous
584 subprocess running @var{program} in it, and returns its process
585 object---when @code{default-directory} is not a magic file name.
586
587 If @code{default-directory} is magic, the function invokes its file
588 handler instead. This handler ought to run @var{program}, perhaps on
589 the local host, perhaps on a remote host that corresponds to
590 @code{default-directory}. In the latter case, the local part of
591 @code{default-directory} becomes the working directory of the process.
592
593 This function does not try to invoke file name handlers for
594 @var{program} or for the @var{program-args}.
595
596 Depending on the implementation of the file handler, it might not be
597 possible to apply @code{process-filter} or @code{process-sentinel} to
598 the resulting process object (@pxref{Filter Functions}, @pxref{Sentinels}).
599
600 Some file handlers may not support @code{start-file-process} (for
601 example @code{ange-ftp-hook-function}). In such cases, the function
602 does nothing and returns @code{nil}.
603 @end defun
604
605 @defun start-process-shell-command name buffer-or-name command
606 This function is like @code{start-process} except that it uses a shell
607 to execute the specified command. The argument @var{command} is a shell
608 command name. The variable @code{shell-file-name} specifies which shell to
609 use.
610
611 The point of running a program through the shell, rather than directly
612 with @code{start-process}, is so that you can employ shell features such
613 as wildcards in the arguments. It follows that if you include an
614 arbitrary user-specified arguments in the command, you should quote it
615 with @code{shell-quote-argument} first, so that any special shell
616 characters do @emph{not} have their special shell meanings. @xref{Shell
617 Arguments}.
618 @end defun
619
620 @defun start-file-process-shell-command name buffer-or-name command
621 This function is like @code{start-process-shell-command}, but uses
622 @code{start-file-process} internally. By this, @var{command} can be
623 executed also on remote hosts, depending on @code{default-directory}.
624 @end defun
625
626 @defvar process-connection-type
627 @cindex pipes
628 @cindex @acronym{PTY}s
629 This variable controls the type of device used to communicate with
630 asynchronous subprocesses. If it is non-@code{nil}, then @acronym{PTY}s are
631 used, when available. Otherwise, pipes are used.
632
633 @acronym{PTY}s are usually preferable for processes visible to the user, as
634 in Shell mode, because they allow job control (@kbd{C-c}, @kbd{C-z},
635 etc.) to work between the process and its children, whereas pipes do
636 not. For subprocesses used for internal purposes by programs, it is
637 often better to use a pipe, because they are more efficient. In
638 addition, the total number of @acronym{PTY}s is limited on many systems and
639 it is good not to waste them.
640
641 The value of @code{process-connection-type} takes effect when
642 @code{start-process} is called. So you can specify how to communicate
643 with one subprocess by binding the variable around the call to
644 @code{start-process}.
645
646 @smallexample
647 @group
648 (let ((process-connection-type nil)) ; @r{Use a pipe.}
649 (start-process @dots{}))
650 @end group
651 @end smallexample
652
653 To determine whether a given subprocess actually got a pipe or a
654 @acronym{PTY}, use the function @code{process-tty-name} (@pxref{Process
655 Information}).
656 @end defvar
657
658 @node Deleting Processes
659 @section Deleting Processes
660 @cindex deleting processes
661
662 @dfn{Deleting a process} disconnects Emacs immediately from the
663 subprocess. Processes are deleted automatically after they terminate,
664 but not necessarily right away. You can delete a process explicitly
665 at any time. If you delete a terminated process explicitly before it
666 is deleted automatically, no harm results. Deleting a running
667 process sends a signal to terminate it (and its child processes if
668 any), and calls the process sentinel if it has one. @xref{Sentinels}.
669
670 When a process is deleted, the process object itself continues to
671 exist as long as other Lisp objects point to it. All the Lisp
672 primitives that work on process objects accept deleted processes, but
673 those that do I/O or send signals will report an error. The process
674 mark continues to point to the same place as before, usually into a
675 buffer where output from the process was being inserted.
676
677 @defopt delete-exited-processes
678 This variable controls automatic deletion of processes that have
679 terminated (due to calling @code{exit} or to a signal). If it is
680 @code{nil}, then they continue to exist until the user runs
681 @code{list-processes}. Otherwise, they are deleted immediately after
682 they exit.
683 @end defopt
684
685 @defun delete-process process
686 This function deletes a process, killing it with a @code{SIGKILL}
687 signal. The argument may be a process, the name of a process, a
688 buffer, or the name of a buffer. (A buffer or buffer-name stands for
689 the process that @code{get-buffer-process} returns.) Calling
690 @code{delete-process} on a running process terminates it, updates the
691 process status, and runs the sentinel (if any) immediately. If the
692 process has already terminated, calling @code{delete-process} has no
693 effect on its status, or on the running of its sentinel (which will
694 happen sooner or later).
695
696 @smallexample
697 @group
698 (delete-process "*shell*")
699 @result{} nil
700 @end group
701 @end smallexample
702 @end defun
703
704 @node Process Information
705 @section Process Information
706
707 Several functions return information about processes.
708 @code{list-processes} is provided for interactive use.
709
710 @deffn Command list-processes &optional query-only
711 This command displays a listing of all living processes. In addition,
712 it finally deletes any process whose status was @samp{Exited} or
713 @samp{Signaled}. It returns @code{nil}.
714
715 If @var{query-only} is non-@code{nil} then it lists only processes
716 whose query flag is non-@code{nil}. @xref{Query Before Exit}.
717 @end deffn
718
719 @defun process-list
720 This function returns a list of all processes that have not been deleted.
721
722 @smallexample
723 @group
724 (process-list)
725 @result{} (#<process display-time> #<process shell>)
726 @end group
727 @end smallexample
728 @end defun
729
730 @defun get-process name
731 This function returns the process named @var{name}, or @code{nil} if
732 there is none. An error is signaled if @var{name} is not a string.
733
734 @smallexample
735 @group
736 (get-process "shell")
737 @result{} #<process shell>
738 @end group
739 @end smallexample
740 @end defun
741
742 @defun process-command process
743 This function returns the command that was executed to start
744 @var{process}. This is a list of strings, the first string being the
745 program executed and the rest of the strings being the arguments that
746 were given to the program.
747
748 @smallexample
749 @group
750 (process-command (get-process "shell"))
751 @result{} ("/bin/csh" "-i")
752 @end group
753 @end smallexample
754 @end defun
755
756 @defun process-contact process &optional key
757
758 This function returns information about how a network or serial
759 process was set up. For a network process, when @var{key} is
760 @code{nil}, it returns @code{(@var{hostname} @var{service})} which
761 specifies what you connected to. For a serial process, when @var{key}
762 is @code{nil}, it returns @code{(@var{port} @var{speed})}. For an
763 ordinary child process, this function always returns @code{t}.
764
765 If @var{key} is @code{t}, the value is the complete status information
766 for the connection, server, or serial port; that is, the list of
767 keywords and values specified in @code{make-network-process} or
768 @code{make-serial-process}, except that some of the values represent
769 the current status instead of what you specified.
770
771 For a network process:
772
773 @table @code
774 @item :buffer
775 The associated value is the process buffer.
776 @item :filter
777 The associated value is the process filter function.
778 @item :sentinel
779 The associated value is the process sentinel function.
780 @item :remote
781 In a connection, the address in internal format of the remote peer.
782 @item :local
783 The local address, in internal format.
784 @item :service
785 In a server, if you specified @code{t} for @var{service},
786 this value is the actual port number.
787 @end table
788
789 @code{:local} and @code{:remote} are included even if they were not
790 specified explicitly in @code{make-network-process}.
791
792 For a serial process, see @code{make-serial-process} and
793 @code{serial-process-configure} for a list of keys.
794
795 If @var{key} is a keyword, the function returns the value corresponding
796 to that keyword.
797 @end defun
798
799 @defun process-id process
800 This function returns the @acronym{PID} of @var{process}. This is an
801 integer that distinguishes the process @var{process} from all other
802 processes running on the same computer at the current time. The
803 @acronym{PID} of a process is chosen by the operating system kernel when the
804 process is started and remains constant as long as the process exists.
805 @end defun
806
807 @defun process-name process
808 This function returns the name of @var{process}.
809 @end defun
810
811 @defun process-status process-name
812 This function returns the status of @var{process-name} as a symbol.
813 The argument @var{process-name} must be a process, a buffer, or a
814 process name (a string).
815
816 The possible values for an actual subprocess are:
817
818 @table @code
819 @item run
820 for a process that is running.
821 @item stop
822 for a process that is stopped but continuable.
823 @item exit
824 for a process that has exited.
825 @item signal
826 for a process that has received a fatal signal.
827 @item open
828 for a network connection that is open.
829 @item closed
830 for a network connection that is closed. Once a connection
831 is closed, you cannot reopen it, though you might be able to open
832 a new connection to the same place.
833 @item connect
834 for a non-blocking connection that is waiting to complete.
835 @item failed
836 for a non-blocking connection that has failed to complete.
837 @item listen
838 for a network server that is listening.
839 @item nil
840 if @var{process-name} is not the name of an existing process.
841 @end table
842
843 @smallexample
844 @group
845 (process-status (get-buffer "*shell*"))
846 @result{} run
847 @end group
848 @group
849 x
850 @result{} #<process xx<1>>
851 (process-status x)
852 @result{} exit
853 @end group
854 @end smallexample
855
856 For a network connection, @code{process-status} returns one of the symbols
857 @code{open} or @code{closed}. The latter means that the other side
858 closed the connection, or Emacs did @code{delete-process}.
859 @end defun
860
861 @defun process-type process
862 This function returns the symbol @code{network} for a network
863 connection or server, @code{serial} for a serial port connection, or
864 @code{real} for a real subprocess.
865 @end defun
866
867 @defun process-exit-status process
868 This function returns the exit status of @var{process} or the signal
869 number that killed it. (Use the result of @code{process-status} to
870 determine which of those it is.) If @var{process} has not yet
871 terminated, the value is 0.
872 @end defun
873
874 @defun process-tty-name process
875 This function returns the terminal name that @var{process} is using for
876 its communication with Emacs---or @code{nil} if it is using pipes
877 instead of a terminal (see @code{process-connection-type} in
878 @ref{Asynchronous Processes}). If @var{process} represents a program
879 running on a remote host, the terminal name used by that program on
880 the remote host is provided as process property @code{remote-tty}.
881 @end defun
882
883 @defun process-coding-system process
884 @anchor{Coding systems for a subprocess}
885 This function returns a cons cell describing the coding systems in use
886 for decoding output from @var{process} and for encoding input to
887 @var{process} (@pxref{Coding Systems}). The value has this form:
888
889 @example
890 (@var{coding-system-for-decoding} . @var{coding-system-for-encoding})
891 @end example
892 @end defun
893
894 @defun set-process-coding-system process &optional decoding-system encoding-system
895 This function specifies the coding systems to use for subsequent output
896 from and input to @var{process}. It will use @var{decoding-system} to
897 decode subprocess output, and @var{encoding-system} to encode subprocess
898 input.
899 @end defun
900
901 Every process also has a property list that you can use to store
902 miscellaneous values associated with the process.
903
904 @defun process-get process propname
905 This function returns the value of the @var{propname} property
906 of @var{process}.
907 @end defun
908
909 @defun process-put process propname value
910 This function sets the value of the @var{propname} property
911 of @var{process} to @var{value}.
912 @end defun
913
914 @defun process-plist process
915 This function returns the process plist of @var{process}.
916 @end defun
917
918 @defun set-process-plist process plist
919 This function sets the process plist of @var{process} to @var{plist}.
920 @end defun
921
922 @node Input to Processes
923 @section Sending Input to Processes
924 @cindex process input
925
926 Asynchronous subprocesses receive input when it is sent to them by
927 Emacs, which is done with the functions in this section. You must
928 specify the process to send input to, and the input data to send. The
929 data appears on the ``standard input'' of the subprocess.
930
931 Some operating systems have limited space for buffered input in a
932 @acronym{PTY}. On these systems, Emacs sends an @acronym{EOF}
933 periodically amidst the other characters, to force them through. For
934 most programs, these @acronym{EOF}s do no harm.
935
936 Subprocess input is normally encoded using a coding system before the
937 subprocess receives it, much like text written into a file. You can use
938 @code{set-process-coding-system} to specify which coding system to use
939 (@pxref{Process Information}). Otherwise, the coding system comes from
940 @code{coding-system-for-write}, if that is non-@code{nil}; or else from
941 the defaulting mechanism (@pxref{Default Coding Systems}).
942
943 Sometimes the system is unable to accept input for that process,
944 because the input buffer is full. When this happens, the send functions
945 wait a short while, accepting output from subprocesses, and then try
946 again. This gives the subprocess a chance to read more of its pending
947 input and make space in the buffer. It also allows filters, sentinels
948 and timers to run---so take account of that in writing your code.
949
950 In these functions, the @var{process} argument can be a process or
951 the name of a process, or a buffer or buffer name (which stands
952 for a process via @code{get-buffer-process}). @code{nil} means
953 the current buffer's process.
954
955 @defun process-send-string process string
956 This function sends @var{process} the contents of @var{string} as
957 standard input. If it is @code{nil}, the current buffer's process is used.
958
959 The function returns @code{nil}.
960
961 @smallexample
962 @group
963 (process-send-string "shell<1>" "ls\n")
964 @result{} nil
965 @end group
966
967
968 @group
969 ---------- Buffer: *shell* ----------
970 ...
971 introduction.texi syntax-tables.texi~
972 introduction.texi~ text.texi
973 introduction.txt text.texi~
974 ...
975 ---------- Buffer: *shell* ----------
976 @end group
977 @end smallexample
978 @end defun
979
980 @defun process-send-region process start end
981 This function sends the text in the region defined by @var{start} and
982 @var{end} as standard input to @var{process}.
983
984 An error is signaled unless both @var{start} and @var{end} are
985 integers or markers that indicate positions in the current buffer. (It
986 is unimportant which number is larger.)
987 @end defun
988
989 @defun process-send-eof &optional process
990 This function makes @var{process} see an end-of-file in its
991 input. The @acronym{EOF} comes after any text already sent to it.
992
993 The function returns @var{process}.
994
995 @smallexample
996 @group
997 (process-send-eof "shell")
998 @result{} "shell"
999 @end group
1000 @end smallexample
1001 @end defun
1002
1003 @defun process-running-child-p &optional process
1004 This function will tell you whether a @var{process} has given control of
1005 its terminal to its own child process. The value is @code{t} if this is
1006 true, or if Emacs cannot tell; it is @code{nil} if Emacs can be certain
1007 that this is not so.
1008 @end defun
1009
1010 @node Signals to Processes
1011 @section Sending Signals to Processes
1012 @cindex process signals
1013 @cindex sending signals
1014 @cindex signals
1015
1016 @dfn{Sending a signal} to a subprocess is a way of interrupting its
1017 activities. There are several different signals, each with its own
1018 meaning. The set of signals and their names is defined by the operating
1019 system. For example, the signal @code{SIGINT} means that the user has
1020 typed @kbd{C-c}, or that some analogous thing has happened.
1021
1022 Each signal has a standard effect on the subprocess. Most signals
1023 kill the subprocess, but some stop or resume execution instead. Most
1024 signals can optionally be handled by programs; if the program handles
1025 the signal, then we can say nothing in general about its effects.
1026
1027 You can send signals explicitly by calling the functions in this
1028 section. Emacs also sends signals automatically at certain times:
1029 killing a buffer sends a @code{SIGHUP} signal to all its associated
1030 processes; killing Emacs sends a @code{SIGHUP} signal to all remaining
1031 processes. (@code{SIGHUP} is a signal that usually indicates that the
1032 user hung up the phone.)
1033
1034 Each of the signal-sending functions takes two optional arguments:
1035 @var{process} and @var{current-group}.
1036
1037 The argument @var{process} must be either a process, a process
1038 name, a buffer, a buffer name, or @code{nil}. A buffer or buffer name
1039 stands for a process through @code{get-buffer-process}. @code{nil}
1040 stands for the process associated with the current buffer. An error
1041 is signaled if @var{process} does not identify a process.
1042
1043 The argument @var{current-group} is a flag that makes a difference
1044 when you are running a job-control shell as an Emacs subprocess. If it
1045 is non-@code{nil}, then the signal is sent to the current process-group
1046 of the terminal that Emacs uses to communicate with the subprocess. If
1047 the process is a job-control shell, this means the shell's current
1048 subjob. If it is @code{nil}, the signal is sent to the process group of
1049 the immediate subprocess of Emacs. If the subprocess is a job-control
1050 shell, this is the shell itself.
1051
1052 The flag @var{current-group} has no effect when a pipe is used to
1053 communicate with the subprocess, because the operating system does not
1054 support the distinction in the case of pipes. For the same reason,
1055 job-control shells won't work when a pipe is used. See
1056 @code{process-connection-type} in @ref{Asynchronous Processes}.
1057
1058 @defun interrupt-process &optional process current-group
1059 This function interrupts the process @var{process} by sending the
1060 signal @code{SIGINT}. Outside of Emacs, typing the ``interrupt
1061 character'' (normally @kbd{C-c} on some systems, and @code{DEL} on
1062 others) sends this signal. When the argument @var{current-group} is
1063 non-@code{nil}, you can think of this function as ``typing @kbd{C-c}''
1064 on the terminal by which Emacs talks to the subprocess.
1065 @end defun
1066
1067 @defun kill-process &optional process current-group
1068 This function kills the process @var{process} by sending the
1069 signal @code{SIGKILL}. This signal kills the subprocess immediately,
1070 and cannot be handled by the subprocess.
1071 @end defun
1072
1073 @defun quit-process &optional process current-group
1074 This function sends the signal @code{SIGQUIT} to the process
1075 @var{process}. This signal is the one sent by the ``quit
1076 character'' (usually @kbd{C-b} or @kbd{C-\}) when you are not inside
1077 Emacs.
1078 @end defun
1079
1080 @defun stop-process &optional process current-group
1081 This function stops the process @var{process} by sending the
1082 signal @code{SIGTSTP}. Use @code{continue-process} to resume its
1083 execution.
1084
1085 Outside of Emacs, on systems with job control, the ``stop character''
1086 (usually @kbd{C-z}) normally sends this signal. When
1087 @var{current-group} is non-@code{nil}, you can think of this function as
1088 ``typing @kbd{C-z}'' on the terminal Emacs uses to communicate with the
1089 subprocess.
1090 @end defun
1091
1092 @defun continue-process &optional process current-group
1093 This function resumes execution of the process @var{process} by sending
1094 it the signal @code{SIGCONT}. This presumes that @var{process} was
1095 stopped previously.
1096 @end defun
1097
1098 @defun signal-process process signal
1099 This function sends a signal to process @var{process}. The argument
1100 @var{signal} specifies which signal to send; it should be an integer.
1101
1102 The @var{process} argument can be a system process @acronym{ID}; that
1103 allows you to send signals to processes that are not children of
1104 Emacs. @xref{System Processes}.
1105 @end defun
1106
1107 @node Output from Processes
1108 @section Receiving Output from Processes
1109 @cindex process output
1110 @cindex output from processes
1111
1112 There are two ways to receive the output that a subprocess writes to
1113 its standard output stream. The output can be inserted in a buffer,
1114 which is called the associated buffer of the process, or a function
1115 called the @dfn{filter function} can be called to act on the output. If
1116 the process has no buffer and no filter function, its output is
1117 discarded.
1118
1119 When a subprocess terminates, Emacs reads any pending output,
1120 then stops reading output from that subprocess. Therefore, if the
1121 subprocess has children that are still live and still producing
1122 output, Emacs won't receive that output.
1123
1124 Output from a subprocess can arrive only while Emacs is waiting: when
1125 reading terminal input, in @code{sit-for} and @code{sleep-for}
1126 (@pxref{Waiting}), and in @code{accept-process-output} (@pxref{Accepting
1127 Output}). This minimizes the problem of timing errors that usually
1128 plague parallel programming. For example, you can safely create a
1129 process and only then specify its buffer or filter function; no output
1130 can arrive before you finish, if the code in between does not call any
1131 primitive that waits.
1132
1133 @defvar process-adaptive-read-buffering
1134 On some systems, when Emacs reads the output from a subprocess, the
1135 output data is read in very small blocks, potentially resulting in
1136 very poor performance. This behavior can be remedied to some extent
1137 by setting the variable @var{process-adaptive-read-buffering} to a
1138 non-@code{nil} value (the default), as it will automatically delay reading
1139 from such processes, thus allowing them to produce more output before
1140 Emacs tries to read it.
1141 @end defvar
1142
1143 It is impossible to separate the standard output and standard error
1144 streams of the subprocess, because Emacs normally spawns the subprocess
1145 inside a pseudo-TTY, and a pseudo-TTY has only one output channel. If
1146 you want to keep the output to those streams separate, you should
1147 redirect one of them to a file---for example, by using an appropriate
1148 shell command.
1149
1150 @menu
1151 * Process Buffers:: If no filter, output is put in a buffer.
1152 * Filter Functions:: Filter functions accept output from the process.
1153 * Decoding Output:: Filters can get unibyte or multibyte strings.
1154 * Accepting Output:: How to wait until process output arrives.
1155 @end menu
1156
1157 @node Process Buffers
1158 @subsection Process Buffers
1159
1160 A process can (and usually does) have an @dfn{associated buffer},
1161 which is an ordinary Emacs buffer that is used for two purposes: storing
1162 the output from the process, and deciding when to kill the process. You
1163 can also use the buffer to identify a process to operate on, since in
1164 normal practice only one process is associated with any given buffer.
1165 Many applications of processes also use the buffer for editing input to
1166 be sent to the process, but this is not built into Emacs Lisp.
1167
1168 Unless the process has a filter function (@pxref{Filter Functions}),
1169 its output is inserted in the associated buffer. The position to insert
1170 the output is determined by the @code{process-mark}, which is then
1171 updated to point to the end of the text just inserted. Usually, but not
1172 always, the @code{process-mark} is at the end of the buffer.
1173
1174 @findex process-kill-buffer-query-function
1175 Killing the associated buffer of a process also kills the process.
1176 Emacs asks for confirmation first, if the process's
1177 @code{process-query-on-exit-flag} is non-@code{nil} (@pxref{Query
1178 Before Exit}). This confirmation is done by the function
1179 @code{process-kill-buffer-query-function}, which is run from
1180 @code{kill-buffer-query-functions} (@pxref{Killing Buffers}).
1181
1182 @defun process-buffer process
1183 This function returns the associated buffer of the process
1184 @var{process}.
1185
1186 @smallexample
1187 @group
1188 (process-buffer (get-process "shell"))
1189 @result{} #<buffer *shell*>
1190 @end group
1191 @end smallexample
1192 @end defun
1193
1194 @defun process-mark process
1195 This function returns the process marker for @var{process}, which is the
1196 marker that says where to insert output from the process.
1197
1198 If @var{process} does not have a buffer, @code{process-mark} returns a
1199 marker that points nowhere.
1200
1201 Insertion of process output in a buffer uses this marker to decide where
1202 to insert, and updates it to point after the inserted text. That is why
1203 successive batches of output are inserted consecutively.
1204
1205 Filter functions normally should use this marker in the same fashion
1206 as is done by direct insertion of output in the buffer. A good
1207 example of a filter function that uses @code{process-mark} is found at
1208 the end of the following section.
1209
1210 When the user is expected to enter input in the process buffer for
1211 transmission to the process, the process marker separates the new input
1212 from previous output.
1213 @end defun
1214
1215 @defun set-process-buffer process buffer
1216 This function sets the buffer associated with @var{process} to
1217 @var{buffer}. If @var{buffer} is @code{nil}, the process becomes
1218 associated with no buffer.
1219 @end defun
1220
1221 @defun get-buffer-process buffer-or-name
1222 This function returns a nondeleted process associated with the buffer
1223 specified by @var{buffer-or-name}. If there are several processes
1224 associated with it, this function chooses one (currently, the one most
1225 recently created, but don't count on that). Deletion of a process
1226 (see @code{delete-process}) makes it ineligible for this function to
1227 return.
1228
1229 It is usually a bad idea to have more than one process associated with
1230 the same buffer.
1231
1232 @smallexample
1233 @group
1234 (get-buffer-process "*shell*")
1235 @result{} #<process shell>
1236 @end group
1237 @end smallexample
1238
1239 Killing the process's buffer deletes the process, which kills the
1240 subprocess with a @code{SIGHUP} signal (@pxref{Signals to Processes}).
1241 @end defun
1242
1243 @node Filter Functions
1244 @subsection Process Filter Functions
1245 @cindex filter function
1246 @cindex process filter
1247
1248 A process @dfn{filter function} is a function that receives the
1249 standard output from the associated process. If a process has a filter,
1250 then @emph{all} output from that process is passed to the filter. The
1251 process buffer is used directly for output from the process only when
1252 there is no filter.
1253
1254 The filter function can only be called when Emacs is waiting for
1255 something, because process output arrives only at such times. Emacs
1256 waits when reading terminal input, in @code{sit-for} and
1257 @code{sleep-for} (@pxref{Waiting}), and in @code{accept-process-output}
1258 (@pxref{Accepting Output}).
1259
1260 A filter function must accept two arguments: the associated process
1261 and a string, which is output just received from it. The function is
1262 then free to do whatever it chooses with the output.
1263
1264 Quitting is normally inhibited within a filter function---otherwise,
1265 the effect of typing @kbd{C-g} at command level or to quit a user
1266 command would be unpredictable. If you want to permit quitting inside
1267 a filter function, bind @code{inhibit-quit} to @code{nil}. In most
1268 cases, the right way to do this is with the macro
1269 @code{with-local-quit}. @xref{Quitting}.
1270
1271 If an error happens during execution of a filter function, it is
1272 caught automatically, so that it doesn't stop the execution of whatever
1273 program was running when the filter function was started. However, if
1274 @code{debug-on-error} is non-@code{nil}, the error-catching is turned
1275 off. This makes it possible to use the Lisp debugger to debug the
1276 filter function. @xref{Debugger}.
1277
1278 Many filter functions sometimes or always insert the text in the
1279 process's buffer, mimicking the actions of Emacs when there is no
1280 filter. Such filter functions need to use @code{set-buffer} in order to
1281 be sure to insert in that buffer. To avoid setting the current buffer
1282 semipermanently, these filter functions must save and restore the
1283 current buffer. They should also check whether the buffer is still
1284 alive, update the process marker, and in some cases update the value
1285 of point. Here is how to do these things:
1286
1287 @smallexample
1288 @group
1289 (defun ordinary-insertion-filter (proc string)
1290 (when (buffer-live-p (process-buffer proc))
1291 (with-current-buffer (process-buffer proc)
1292 (let ((moving (= (point) (process-mark proc))))
1293 @end group
1294 @group
1295 (save-excursion
1296 ;; @r{Insert the text, advancing the process marker.}
1297 (goto-char (process-mark proc))
1298 (insert string)
1299 (set-marker (process-mark proc) (point)))
1300 (if moving (goto-char (process-mark proc)))))))
1301 @end group
1302 @end smallexample
1303
1304 @noindent
1305 The reason to use @code{with-current-buffer}, rather than using
1306 @code{save-excursion} to save and restore the current buffer, is so as
1307 to preserve the change in point made by the second call to
1308 @code{goto-char}.
1309
1310 To make the filter force the process buffer to be visible whenever new
1311 text arrives, insert the following line just before the
1312 @code{with-current-buffer} construct:
1313
1314 @smallexample
1315 (display-buffer (process-buffer proc))
1316 @end smallexample
1317
1318 To force point to the end of the new output, no matter where it was
1319 previously, eliminate the variable @code{moving} and call
1320 @code{goto-char} unconditionally.
1321
1322 In earlier Emacs versions, every filter function that did regular
1323 expression searching or matching had to explicitly save and restore the
1324 match data. Now Emacs does this automatically for filter functions;
1325 they never need to do it explicitly. @xref{Match Data}.
1326
1327 The output to the function may come in chunks of any size. A program
1328 that produces the same output twice in a row may send it as one batch of
1329 200 characters one time, and five batches of 40 characters the next. If
1330 the filter looks for certain text strings in the subprocess output, make
1331 sure to handle the case where one of these strings is split across two
1332 or more batches of output; one way to do this is to insert the
1333 received text into a temporary buffer, which can then be searched.
1334
1335 @defun set-process-filter process filter
1336 This function gives @var{process} the filter function @var{filter}. If
1337 @var{filter} is @code{nil}, it gives the process no filter.
1338 @end defun
1339
1340 @defun process-filter process
1341 This function returns the filter function of @var{process}, or @code{nil}
1342 if it has none.
1343 @end defun
1344
1345 Here is an example of use of a filter function:
1346
1347 @smallexample
1348 @group
1349 (defun keep-output (process output)
1350 (setq kept (cons output kept)))
1351 @result{} keep-output
1352 @end group
1353 @group
1354 (setq kept nil)
1355 @result{} nil
1356 @end group
1357 @group
1358 (set-process-filter (get-process "shell") 'keep-output)
1359 @result{} keep-output
1360 @end group
1361 @group
1362 (process-send-string "shell" "ls ~/other\n")
1363 @result{} nil
1364 kept
1365 @result{} ("lewis@@slug[8] % "
1366 @end group
1367 @group
1368 "FINAL-W87-SHORT.MSS backup.otl kolstad.mss~
1369 address.txt backup.psf kolstad.psf
1370 backup.bib~ david.mss resume-Dec-86.mss~
1371 backup.err david.psf resume-Dec.psf
1372 backup.mss dland syllabus.mss
1373 "
1374 "#backups.mss# backup.mss~ kolstad.mss
1375 ")
1376 @end group
1377 @end smallexample
1378
1379 @ignore @c The code in this example doesn't show the right way to do things.
1380 Here is another, more realistic example, which demonstrates how to use
1381 the process mark to do insertion in the same fashion as is done when
1382 there is no filter function:
1383
1384 @smallexample
1385 @group
1386 ;; @r{Insert input in the buffer specified by @code{my-shell-buffer}}
1387 ;; @r{and make sure that buffer is shown in some window.}
1388 (defun my-process-filter (proc str)
1389 (let ((cur (selected-window))
1390 (pop-up-windows t))
1391 (pop-to-buffer my-shell-buffer)
1392 @end group
1393 @group
1394 (goto-char (point-max))
1395 (insert str)
1396 (set-marker (process-mark proc) (point-max))
1397 (select-window cur)))
1398 @end group
1399 @end smallexample
1400 @end ignore
1401
1402 @node Decoding Output
1403 @subsection Decoding Process Output
1404 @cindex decode process output
1405
1406 When Emacs writes process output directly into a multibyte buffer,
1407 it decodes the output according to the process output coding system.
1408 If the coding system is @code{raw-text} or @code{no-conversion}, Emacs
1409 converts the unibyte output to multibyte using
1410 @code{string-to-multibyte}, and inserts the resulting multibyte text.
1411
1412 You can use @code{set-process-coding-system} to specify which coding
1413 system to use (@pxref{Process Information}). Otherwise, the coding
1414 system comes from @code{coding-system-for-read}, if that is
1415 non-@code{nil}; or else from the defaulting mechanism (@pxref{Default
1416 Coding Systems}). If the text output by a process contains null
1417 bytes, Emacs by default uses @code{no-conversion} for it; see
1418 @ref{Lisp and Coding Systems, inhibit-null-byte-detection}, for how to
1419 control this behavior.
1420
1421 @strong{Warning:} Coding systems such as @code{undecided} which
1422 determine the coding system from the data do not work entirely
1423 reliably with asynchronous subprocess output. This is because Emacs
1424 has to process asynchronous subprocess output in batches, as it
1425 arrives. Emacs must try to detect the proper coding system from one
1426 batch at a time, and this does not always work. Therefore, if at all
1427 possible, specify a coding system that determines both the character
1428 code conversion and the end of line conversion---that is, one like
1429 @code{latin-1-unix}, rather than @code{undecided} or @code{latin-1}.
1430
1431 @c Let's keep the index entries that were there for
1432 @c set-process-filter-multibyte and process-filter-multibyte-p,
1433 @cindex filter multibyte flag, of process
1434 @cindex process filter multibyte flag
1435 When Emacs calls a process filter function, it provides the process
1436 output as a multibyte string or as a unibyte string according to the
1437 process's filter coding system. Emacs
1438 decodes the output according to the process output coding system,
1439 which usually produces a multibyte string, except for coding systems
1440 such as @code{binary} and @code{raw-text}
1441
1442 @node Accepting Output
1443 @subsection Accepting Output from Processes
1444 @cindex accept input from processes
1445
1446 Output from asynchronous subprocesses normally arrives only while
1447 Emacs is waiting for some sort of external event, such as elapsed time
1448 or terminal input. Occasionally it is useful in a Lisp program to
1449 explicitly permit output to arrive at a specific point, or even to wait
1450 until output arrives from a process.
1451
1452 @defun accept-process-output &optional process seconds millisec just-this-one
1453 This function allows Emacs to read pending output from processes. The
1454 output is inserted in the associated buffers or given to their filter
1455 functions. If @var{process} is non-@code{nil} then this function does
1456 not return until some output has been received from @var{process}.
1457
1458 @c Emacs 19 feature
1459 The arguments @var{seconds} and @var{millisec} let you specify timeout
1460 periods. The former specifies a period measured in seconds and the
1461 latter specifies one measured in milliseconds. The two time periods
1462 thus specified are added together, and @code{accept-process-output}
1463 returns after that much time, whether or not there has been any
1464 subprocess output.
1465
1466 The argument @var{millisec} is semi-obsolete nowadays because
1467 @var{seconds} can be a floating point number to specify waiting a
1468 fractional number of seconds. If @var{seconds} is 0, the function
1469 accepts whatever output is pending but does not wait.
1470
1471 @c Emacs 22.1 feature
1472 If @var{process} is a process, and the argument @var{just-this-one} is
1473 non-@code{nil}, only output from that process is handled, suspending output
1474 from other processes until some output has been received from that
1475 process or the timeout expires. If @var{just-this-one} is an integer,
1476 also inhibit running timers. This feature is generally not
1477 recommended, but may be necessary for specific applications, such as
1478 speech synthesis.
1479
1480 The function @code{accept-process-output} returns non-@code{nil} if it
1481 did get some output, or @code{nil} if the timeout expired before output
1482 arrived.
1483 @end defun
1484
1485 @node Sentinels
1486 @section Sentinels: Detecting Process Status Changes
1487 @cindex process sentinel
1488 @cindex sentinel (of process)
1489
1490 A @dfn{process sentinel} is a function that is called whenever the
1491 associated process changes status for any reason, including signals
1492 (whether sent by Emacs or caused by the process's own actions) that
1493 terminate, stop, or continue the process. The process sentinel is
1494 also called if the process exits. The sentinel receives two
1495 arguments: the process for which the event occurred, and a string
1496 describing the type of event.
1497
1498 The string describing the event looks like one of the following:
1499
1500 @itemize @bullet
1501 @item
1502 @code{"finished\n"}.
1503
1504 @item
1505 @code{"exited abnormally with code @var{exitcode}\n"}.
1506
1507 @item
1508 @code{"@var{name-of-signal}\n"}.
1509
1510 @item
1511 @code{"@var{name-of-signal} (core dumped)\n"}.
1512 @end itemize
1513
1514 A sentinel runs only while Emacs is waiting (e.g., for terminal
1515 input, or for time to elapse, or for process output). This avoids the
1516 timing errors that could result from running them at random places in
1517 the middle of other Lisp programs. A program can wait, so that
1518 sentinels will run, by calling @code{sit-for} or @code{sleep-for}
1519 (@pxref{Waiting}), or @code{accept-process-output} (@pxref{Accepting
1520 Output}). Emacs also allows sentinels to run when the command loop is
1521 reading input. @code{delete-process} calls the sentinel when it
1522 terminates a running process.
1523
1524 Emacs does not keep a queue of multiple reasons to call the sentinel
1525 of one process; it records just the current status and the fact that
1526 there has been a change. Therefore two changes in status, coming in
1527 quick succession, can call the sentinel just once. However, process
1528 termination will always run the sentinel exactly once. This is
1529 because the process status can't change again after termination.
1530
1531 Emacs explicitly checks for output from the process before running
1532 the process sentinel. Once the sentinel runs due to process
1533 termination, no further output can arrive from the process.
1534
1535 A sentinel that writes the output into the buffer of the process
1536 should check whether the buffer is still alive. If it tries to insert
1537 into a dead buffer, it will get an error. If the buffer is dead,
1538 @code{(buffer-name (process-buffer @var{process}))} returns @code{nil}.
1539
1540 Quitting is normally inhibited within a sentinel---otherwise, the
1541 effect of typing @kbd{C-g} at command level or to quit a user command
1542 would be unpredictable. If you want to permit quitting inside a
1543 sentinel, bind @code{inhibit-quit} to @code{nil}. In most cases, the
1544 right way to do this is with the macro @code{with-local-quit}.
1545 @xref{Quitting}.
1546
1547 If an error happens during execution of a sentinel, it is caught
1548 automatically, so that it doesn't stop the execution of whatever
1549 programs was running when the sentinel was started. However, if
1550 @code{debug-on-error} is non-@code{nil}, the error-catching is turned
1551 off. This makes it possible to use the Lisp debugger to debug the
1552 sentinel. @xref{Debugger}.
1553
1554 While a sentinel is running, the process sentinel is temporarily
1555 set to @code{nil} so that the sentinel won't run recursively.
1556 For this reason it is not possible for a sentinel to specify
1557 a new sentinel.
1558
1559 In earlier Emacs versions, every sentinel that did regular expression
1560 searching or matching had to explicitly save and restore the match data.
1561 Now Emacs does this automatically for sentinels; they never need to do
1562 it explicitly. @xref{Match Data}.
1563
1564 @defun set-process-sentinel process sentinel
1565 This function associates @var{sentinel} with @var{process}. If
1566 @var{sentinel} is @code{nil}, then the process will have no sentinel.
1567 The default behavior when there is no sentinel is to insert a message in
1568 the process's buffer when the process status changes.
1569
1570 Changes in process sentinel take effect immediately---if the sentinel
1571 is slated to be run but has not been called yet, and you specify a new
1572 sentinel, the eventual call to the sentinel will use the new one.
1573
1574 @smallexample
1575 @group
1576 (defun msg-me (process event)
1577 (princ
1578 (format "Process: %s had the event `%s'" process event)))
1579 (set-process-sentinel (get-process "shell") 'msg-me)
1580 @result{} msg-me
1581 @end group
1582 @group
1583 (kill-process (get-process "shell"))
1584 @print{} Process: #<process shell> had the event `killed'
1585 @result{} #<process shell>
1586 @end group
1587 @end smallexample
1588 @end defun
1589
1590 @defun process-sentinel process
1591 This function returns the sentinel of @var{process}, or @code{nil} if it
1592 has none.
1593 @end defun
1594
1595 @defun waiting-for-user-input-p
1596 While a sentinel or filter function is running, this function returns
1597 non-@code{nil} if Emacs was waiting for keyboard input from the user at
1598 the time the sentinel or filter function was called, @code{nil} if it
1599 was not.
1600 @end defun
1601
1602 @node Query Before Exit
1603 @section Querying Before Exit
1604
1605 When Emacs exits, it terminates all its subprocesses by sending them
1606 the @code{SIGHUP} signal. Because subprocesses may be doing
1607 valuable work, Emacs normally asks the user to confirm that it is ok
1608 to terminate them. Each process has a query flag which, if
1609 non-@code{nil}, says that Emacs should ask for confirmation before
1610 exiting and thus killing that process. The default for the query flag
1611 is @code{t}, meaning @emph{do} query.
1612
1613 @defun process-query-on-exit-flag process
1614 This returns the query flag of @var{process}.
1615 @end defun
1616
1617 @defun set-process-query-on-exit-flag process flag
1618 This function sets the query flag of @var{process} to @var{flag}. It
1619 returns @var{flag}.
1620
1621 @smallexample
1622 @group
1623 ;; @r{Don't query about the shell process}
1624 (set-process-query-on-exit-flag (get-process "shell") nil)
1625 @result{} t
1626 @end group
1627 @end smallexample
1628 @end defun
1629
1630 @defun process-kill-without-query process &optional do-query
1631 This function clears the query flag of @var{process}, so that
1632 Emacs will not query the user on account of that process.
1633
1634 Actually, the function does more than that: it returns the old value of
1635 the process's query flag, and sets the query flag to @var{do-query}.
1636 Please don't use this function to do those things any more---please
1637 use the newer, cleaner functions @code{process-query-on-exit-flag} and
1638 @code{set-process-query-on-exit-flag} in all but the simplest cases.
1639 The only way you should use @code{process-kill-without-query} nowadays
1640 is like this:
1641
1642 @smallexample
1643 @group
1644 ;; @r{Don't query about the shell process}
1645 (process-kill-without-query (get-process "shell"))
1646 @end group
1647 @end smallexample
1648 @end defun
1649
1650 @node System Processes
1651 @section Accessing Other Processes
1652 @cindex system processes
1653
1654 In addition to accessing and manipulating processes that are
1655 subprocesses of the current Emacs session, Emacs Lisp programs can
1656 also access other processes running on the same machine. We call
1657 these @dfn{system processes}, to distinguish between them and Emacs
1658 subprocesses.
1659
1660 Emacs provides several primitives for accessing system processes.
1661 Not all platforms support these primitives; on those which don't,
1662 these primitives return @code{nil}.
1663
1664 @defun list-system-processes
1665 This function returns a list of all the processes running on the
1666 system. Each process is identified by its @acronym{PID}, a numerical
1667 process ID that is assigned by the OS and distinguishes the process
1668 from all the other processes running on the same machine at the same
1669 time.
1670 @end defun
1671
1672 @defun process-attributes pid
1673 This function returns an alist of attributes for the process specified
1674 by its process ID @var{pid}. Each association in the alist is of the
1675 form @code{(@var{key} . @var{value})}, where @var{key} designates the
1676 attribute and @var{value} is the value of that attribute. The various
1677 attribute @var{key}'s that this function can return are listed below.
1678 Not all platforms support all of these attributes; if an attribute is
1679 not supported, its association will not appear in the returned alist.
1680 Values that are numbers can be either integer or floating-point,
1681 depending on the magnitude of the value.
1682
1683 @table @code
1684 @item euid
1685 The effective user ID of the user who invoked the process. The
1686 corresponding @var{value} is a number. If the process was invoked by
1687 the same user who runs the current Emacs session, the value is
1688 identical to what @code{user-uid} returns (@pxref{User
1689 Identification}).
1690
1691 @item user
1692 User name corresponding to the process's effective user ID, a string.
1693
1694 @item egid
1695 The group ID of the effective user ID, a number.
1696
1697 @item group
1698 Group name corresponding to the effective user's group ID, a string.
1699
1700 @item comm
1701 The name of the command that runs in the process. This is a string
1702 that usually specifies the name of the executable file of the process,
1703 without the leading directories. However, some special system
1704 processes can report strings that do not correspond to an executable
1705 file of a program.
1706
1707 @item state
1708 The state code of the process. This is a short string that encodes
1709 the scheduling state of the process. Here's a list of the most
1710 frequently seen codes:
1711
1712 @table @code
1713 @item "D"
1714 uninterruptible sleep (usually I/O)
1715 @item "R"
1716 running
1717 @item "S"
1718 interruptible sleep (waiting for some event)
1719 @item "T"
1720 stopped, e.g., by a job control signal
1721 @item "Z"
1722 ``zombie'': a process that terminated, but was not reaped by its parent
1723 @end table
1724
1725 @noindent
1726 For the full list of the possible states, see the manual page of the
1727 @command{ps} command.
1728
1729 @item ppid
1730 The process ID of the parent process, a number.
1731
1732 @item pgrp
1733 The process group ID of the process, a number.
1734
1735 @item sess
1736 The session ID of the process. This is a number that is the process
1737 ID of the process's @dfn{session leader}.
1738
1739 @item ttname
1740 A string that is the name of the process's controlling terminal. On
1741 Unix and GNU systems, this is normally the file name of the
1742 corresponding terminal device, such as @file{/dev/pts65}.
1743
1744 @item tpgid
1745 The numerical process group ID of the foreground process group that
1746 uses the process's terminal.
1747
1748 @item minflt
1749 The number of minor page faults caused by the process since its
1750 beginning. (Minor page faults are those that don't involve reading
1751 from disk.)
1752
1753 @item majflt
1754 The number of major page faults caused by the process since its
1755 beginning. (Major page faults require a disk to be read, and are thus
1756 more expensive than minor page faults.)
1757
1758 @item cminflt
1759 @itemx cmajflt
1760 Like @code{minflt} and @code{majflt}, but include the number of page
1761 faults for all the child processes of the given process.
1762
1763 @item utime
1764 Time spent by the process in the user context, for running the
1765 application's code. The corresponding @var{value} is in the
1766 @w{@code{(@var{high} @var{low} @var{microsec})}} format, the same
1767 format used by functions @code{current-time} (@pxref{Time of Day,
1768 current-time}) and @code{file-attributes} (@pxref{File Attributes}).
1769
1770 @item stime
1771 Time spent by the process in the system (kernel) context, for
1772 processing system calls. The corresponding @var{value} is in the same
1773 format as for @code{utime}.
1774
1775 @item time
1776 The sum of @code{utime} and @code{stime}. The corresponding
1777 @var{value} is in the same format as for @code{utime}.
1778
1779 @item cutime
1780 @itemx cstime
1781 @itemx ctime
1782 Like @code{utime}, @code{stime}, and @code{time}, but include the
1783 times of all the child processes of the given process.
1784
1785 @item pri
1786 The numerical priority of the process.
1787
1788 @item nice
1789 The @dfn{nice value} of the process, a number. (Processes with smaller
1790 nice values get scheduled more favorably.)
1791
1792 @item thcount
1793 The number of threads in the process.
1794
1795 @item start
1796 The time the process was started, in the @w{@code{(@var{high}
1797 @var{low} @var{microsec})}} format used by @code{current-time} and
1798 @code{file-attributes}.
1799
1800 @item etime
1801 The time elapsed since the process started, in the @w{@code{(@var{high}
1802 @var{low} @var{microsec})}} format.
1803
1804 @item vsize
1805 The virtual memory size of the process, measured in kilobytes.
1806
1807 @item rss
1808 The size of the process's @dfn{resident set}, the number of kilobytes
1809 occupied by the process in the machine's physical memory.
1810
1811 @item pcpu
1812 The percentage of the CPU time used by the process since it started.
1813 The corresponding @var{value} is a floating-point number between 0 and
1814 100.
1815
1816 @item pmem
1817 The percentage of the total physical memory installed on the machine
1818 used by the process's resident set. The value is a floating-point
1819 number between 0 and 100.
1820
1821 @item args
1822 The command-line with which the process was invoked. This is a string
1823 in which individual command-line arguments are separated by blanks;
1824 whitespace characters that are embedded in the arguments are quoted as
1825 appropriate for the system's shell: escaped by backslash characters on
1826 GNU and Unix, and enclosed in double quote characters on Windows.
1827 Thus, this command-line string can be directly used in primitives such
1828 as @code{shell-command}.
1829 @end table
1830
1831 @end defun
1832
1833
1834 @node Transaction Queues
1835 @section Transaction Queues
1836 @cindex transaction queue
1837
1838 You can use a @dfn{transaction queue} to communicate with a subprocess
1839 using transactions. First use @code{tq-create} to create a transaction
1840 queue communicating with a specified process. Then you can call
1841 @code{tq-enqueue} to send a transaction.
1842
1843 @defun tq-create process
1844 This function creates and returns a transaction queue communicating with
1845 @var{process}. The argument @var{process} should be a subprocess
1846 capable of sending and receiving streams of bytes. It may be a child
1847 process, or it may be a TCP connection to a server, possibly on another
1848 machine.
1849 @end defun
1850
1851 @defun tq-enqueue queue question regexp closure fn &optional delay-question
1852 This function sends a transaction to queue @var{queue}. Specifying the
1853 queue has the effect of specifying the subprocess to talk to.
1854
1855 The argument @var{question} is the outgoing message that starts the
1856 transaction. The argument @var{fn} is the function to call when the
1857 corresponding answer comes back; it is called with two arguments:
1858 @var{closure}, and the answer received.
1859
1860 The argument @var{regexp} is a regular expression that should match
1861 text at the end of the entire answer, but nothing before; that's how
1862 @code{tq-enqueue} determines where the answer ends.
1863
1864 If the argument @var{delay-question} is non-@code{nil}, delay sending
1865 this question until the process has finished replying to any previous
1866 questions. This produces more reliable results with some processes.
1867
1868 The return value of @code{tq-enqueue} itself is not meaningful.
1869 @end defun
1870
1871 @defun tq-close queue
1872 Shut down transaction queue @var{queue}, waiting for all pending transactions
1873 to complete, and then terminate the connection or child process.
1874 @end defun
1875
1876 Transaction queues are implemented by means of a filter function.
1877 @xref{Filter Functions}.
1878
1879 @node Network
1880 @section Network Connections
1881 @cindex network connection
1882 @cindex TCP
1883 @cindex UDP
1884
1885 Emacs Lisp programs can open stream (TCP) and datagram (UDP) network
1886 connections to other processes on the same machine or other machines.
1887 A network connection is handled by Lisp much like a subprocess, and is
1888 represented by a process object. However, the process you are
1889 communicating with is not a child of the Emacs process, so it has no
1890 process @acronym{ID}, and you can't kill it or send it signals. All you
1891 can do is send and receive data. @code{delete-process} closes the
1892 connection, but does not kill the program at the other end; that
1893 program must decide what to do about closure of the connection.
1894
1895 Lisp programs can listen for connections by creating network
1896 servers. A network server is also represented by a kind of process
1897 object, but unlike a network connection, the network server never
1898 transfers data itself. When it receives a connection request, it
1899 creates a new network connection to represent the connection just
1900 made. (The network connection inherits certain information, including
1901 the process plist, from the server.) The network server then goes
1902 back to listening for more connection requests.
1903
1904 Network connections and servers are created by calling
1905 @code{make-network-process} with an argument list consisting of
1906 keyword/argument pairs, for example @code{:server t} to create a
1907 server process, or @code{:type 'datagram} to create a datagram
1908 connection. @xref{Low-Level Network}, for details. You can also use
1909 the @code{open-network-stream} function described below.
1910
1911 To distinguish the different types of processes, the
1912 @code{process-type} function returns the symbol @code{network} for a
1913 network connection or server, @code{serial} for a serial port
1914 connection, or @code{real} for a real subprocess.
1915
1916 The @code{process-status} function returns @code{open},
1917 @code{closed}, @code{connect}, and @code{failed} for network
1918 connections. For a network server, the status is always
1919 @code{listen}. None of those values is possible for a real
1920 subprocess. @xref{Process Information}.
1921
1922 You can stop and resume operation of a network process by calling
1923 @code{stop-process} and @code{continue-process}. For a server
1924 process, being stopped means not accepting new connections. (Up to 5
1925 connection requests will be queued for when you resume the server; you
1926 can increase this limit, unless it is imposed by the operating
1927 system.) For a network stream connection, being stopped means not
1928 processing input (any arriving input waits until you resume the
1929 connection). For a datagram connection, some number of packets may be
1930 queued but input may be lost. You can use the function
1931 @code{process-command} to determine whether a network connection or
1932 server is stopped; a non-@code{nil} value means yes.
1933
1934 @defun open-network-stream name buffer-or-name host service
1935 This function opens a TCP connection, and returns a process object
1936 that represents the connection.
1937
1938 The @var{name} argument specifies the name for the process object. It
1939 is modified as necessary to make it unique.
1940
1941 The @var{buffer-or-name} argument is the buffer to associate with the
1942 connection. Output from the connection is inserted in the buffer,
1943 unless you specify a filter function to handle the output. If
1944 @var{buffer-or-name} is @code{nil}, it means that the connection is not
1945 associated with any buffer.
1946
1947 The arguments @var{host} and @var{service} specify where to connect to;
1948 @var{host} is the host name (a string), and @var{service} is the name of
1949 a defined network service (a string) or a port number (an integer).
1950 @end defun
1951
1952 @node Network Servers
1953 @section Network Servers
1954 @cindex network servers
1955
1956 You create a server by calling @code{make-network-process} with
1957 @code{:server t}. The server will listen for connection requests from
1958 clients. When it accepts a client connection request, that creates a
1959 new network connection, itself a process object, with the following
1960 parameters:
1961
1962 @itemize @bullet
1963 @item
1964 The connection's process name is constructed by concatenating the
1965 server process' @var{name} with a client identification string. The
1966 client identification string for an IPv4 connection looks like
1967 @samp{<@var{a}.@var{b}.@var{c}.@var{d}:@var{p}>}. Otherwise, it is a
1968 unique number in brackets, as in @samp{<@var{nnn}>}. The number
1969 is unique for each connection in the Emacs session.
1970
1971 @item
1972 If the server's filter is non-@code{nil}, the connection process does
1973 not get a separate process buffer; otherwise, Emacs creates a new
1974 buffer for the purpose. The buffer name is the server's buffer name
1975 or process name, concatenated with the client identification string.
1976
1977 The server's process buffer value is never used directly by Emacs, but
1978 it is passed to the log function, which can log connections by
1979 inserting text there.
1980
1981 @item
1982 The communication type and the process filter and sentinel are
1983 inherited from those of the server. The server never directly
1984 uses its filter and sentinel; their sole purpose is to initialize
1985 connections made to the server.
1986
1987 @item
1988 The connection's process contact info is set according to the client's
1989 addressing information (typically an IP address and a port number).
1990 This information is associated with the @code{process-contact}
1991 keywords @code{:host}, @code{:service}, @code{:remote}.
1992
1993 @item
1994 The connection's local address is set up according to the port
1995 number used for the connection.
1996
1997 @item
1998 The client process' plist is initialized from the server's plist.
1999 @end itemize
2000
2001 @node Datagrams
2002 @section Datagrams
2003 @cindex datagrams
2004
2005 A datagram connection communicates with individual packets rather
2006 than streams of data. Each call to @code{process-send} sends one
2007 datagram packet (@pxref{Input to Processes}), and each datagram
2008 received results in one call to the filter function.
2009
2010 The datagram connection doesn't have to talk with the same remote
2011 peer all the time. It has a @dfn{remote peer address} which specifies
2012 where to send datagrams to. Each time an incoming datagram is passed
2013 to the filter function, the peer address is set to the address that
2014 datagram came from; that way, if the filter function sends a datagram,
2015 it will go back to that place. You can specify the remote peer
2016 address when you create the datagram connection using the
2017 @code{:remote} keyword. You can change it later on by calling
2018 @code{set-process-datagram-address}.
2019
2020 @defun process-datagram-address process
2021 If @var{process} is a datagram connection or server, this function
2022 returns its remote peer address.
2023 @end defun
2024
2025 @defun set-process-datagram-address process address
2026 If @var{process} is a datagram connection or server, this function
2027 sets its remote peer address to @var{address}.
2028 @end defun
2029
2030 @node Low-Level Network
2031 @section Low-Level Network Access
2032
2033 You can also create network connections by operating at a lower
2034 level than that of @code{open-network-stream}, using
2035 @code{make-network-process}.
2036
2037 @menu
2038 * Proc: Network Processes. Using @code{make-network-process}.
2039 * Options: Network Options. Further control over network connections.
2040 * Features: Network Feature Testing.
2041 Determining which network features work on
2042 the machine you are using.
2043 @end menu
2044
2045 @node Network Processes
2046 @subsection @code{make-network-process}
2047
2048 The basic function for creating network connections and network
2049 servers is @code{make-network-process}. It can do either of those
2050 jobs, depending on the arguments you give it.
2051
2052 @defun make-network-process &rest args
2053 This function creates a network connection or server and returns the
2054 process object that represents it. The arguments @var{args} are a
2055 list of keyword/argument pairs. Omitting a keyword is always
2056 equivalent to specifying it with value @code{nil}, except for
2057 @code{:coding}, @code{:filter-multibyte}, and @code{:reuseaddr}. Here
2058 are the meaningful keywords:
2059
2060 @table @asis
2061 @item :name @var{name}
2062 Use the string @var{name} as the process name. It is modified if
2063 necessary to make it unique.
2064
2065 @item :type @var{type}
2066 Specify the communication type. A value of @code{nil} specifies a
2067 stream connection (the default); @code{datagram} specifies a datagram
2068 connection; @code{seqpacket} specifies a ``sequenced packet stream''
2069 connection. Both connections and servers can be of these types.
2070
2071 @item :server @var{server-flag}
2072 If @var{server-flag} is non-@code{nil}, create a server. Otherwise,
2073 create a connection. For a stream type server, @var{server-flag} may
2074 be an integer which then specifies the length of the queue of pending
2075 connections to the server. The default queue length is 5.
2076
2077 @item :host @var{host}
2078 Specify the host to connect to. @var{host} should be a host name or
2079 Internet address, as a string, or the symbol @code{local} to specify
2080 the local host. If you specify @var{host} for a server, it must
2081 specify a valid address for the local host, and only clients
2082 connecting to that address will be accepted.
2083
2084 @item :service @var{service}
2085 @var{service} specifies a port number to connect to, or, for a server,
2086 the port number to listen on. It should be a service name that
2087 translates to a port number, or an integer specifying the port number
2088 directly. For a server, it can also be @code{t}, which means to let
2089 the system select an unused port number.
2090
2091 @item :family @var{family}
2092 @var{family} specifies the address (and protocol) family for
2093 communication. @code{nil} means determine the proper address family
2094 automatically for the given @var{host} and @var{service}.
2095 @code{local} specifies a Unix socket, in which case @var{host} is
2096 ignored. @code{ipv4} and @code{ipv6} specify to use IPv4 and IPv6
2097 respectively.
2098
2099 @item :local @var{local-address}
2100 For a server process, @var{local-address} is the address to listen on.
2101 It overrides @var{family}, @var{host} and @var{service}, and you
2102 may as well not specify them.
2103
2104 @item :remote @var{remote-address}
2105 For a connection, @var{remote-address} is the address to connect to.
2106 It overrides @var{family}, @var{host} and @var{service}, and you
2107 may as well not specify them.
2108
2109 For a datagram server, @var{remote-address} specifies the initial
2110 setting of the remote datagram address.
2111
2112 The format of @var{local-address} or @var{remote-address} depends on
2113 the address family:
2114
2115 @itemize -
2116 @item
2117 An IPv4 address is represented as a five-element vector of four 8-bit
2118 integers and one 16-bit integer
2119 @code{[@var{a} @var{b} @var{c} @var{d} @var{p}]} corresponding to
2120 numeric IPv4 address @var{a}.@var{b}.@var{c}.@var{d} and port number
2121 @var{p}.
2122
2123 @item
2124 An IPv6 address is represented as a nine-element vector of 16-bit
2125 integers @code{[@var{a} @var{b} @var{c} @var{d} @var{e} @var{f}
2126 @var{g} @var{h} @var{p}]} corresponding to numeric IPv6 address
2127 @var{a}:@var{b}:@var{c}:@var{d}:@var{e}:@var{f}:@var{g}:@var{h} and
2128 port number @var{p}.
2129
2130 @item
2131 A local address is represented as a string which specifies the address
2132 in the local address space.
2133
2134 @item
2135 An ``unsupported family'' address is represented by a cons
2136 @code{(@var{f} . @var{av})}, where @var{f} is the family number and
2137 @var{av} is a vector specifying the socket address using one element
2138 per address data byte. Do not rely on this format in portable code,
2139 as it may depend on implementation defined constants, data sizes, and
2140 data structure alignment.
2141 @end itemize
2142
2143 @item :nowait @var{bool}
2144 If @var{bool} is non-@code{nil} for a stream connection, return
2145 without waiting for the connection to complete. When the connection
2146 succeeds or fails, Emacs will call the sentinel function, with a
2147 second argument matching @code{"open"} (if successful) or
2148 @code{"failed"}. The default is to block, so that
2149 @code{make-network-process} does not return until the connection
2150 has succeeded or failed.
2151
2152 @item :stop @var{stopped}
2153 Start the network connection or server in the `stopped' state if
2154 @var{stopped} is non-@code{nil}.
2155
2156 @item :buffer @var{buffer}
2157 Use @var{buffer} as the process buffer.
2158
2159 @item :coding @var{coding}
2160 Use @var{coding} as the coding system for this process. To specify
2161 different coding systems for decoding data from the connection and for
2162 encoding data sent to it, specify @code{(@var{decoding} .
2163 @var{encoding})} for @var{coding}.
2164
2165 If you don't specify this keyword at all, the default
2166 is to determine the coding systems from the data.
2167
2168 @item :noquery @var{query-flag}
2169 Initialize the process query flag to @var{query-flag}.
2170 @xref{Query Before Exit}.
2171
2172 @item :filter @var{filter}
2173 Initialize the process filter to @var{filter}.
2174
2175 @item :sentinel @var{sentinel}
2176 Initialize the process sentinel to @var{sentinel}.
2177
2178 @item :log @var{log}
2179 Initialize the log function of a server process to @var{log}. The log
2180 function is called each time the server accepts a network connection
2181 from a client. The arguments passed to the log function are
2182 @var{server}, @var{connection}, and @var{message}, where @var{server}
2183 is the server process, @var{connection} is the new process for the
2184 connection, and @var{message} is a string describing what has
2185 happened.
2186
2187 @item :plist @var{plist}
2188 Initialize the process plist to @var{plist}.
2189 @end table
2190
2191 The original argument list, modified with the actual connection
2192 information, is available via the @code{process-contact} function.
2193 @end defun
2194
2195 @node Network Options
2196 @subsection Network Options
2197
2198 The following network options can be specified when you create a
2199 network process. Except for @code{:reuseaddr}, you can also set or
2200 modify these options later, using @code{set-network-process-option}.
2201
2202 For a server process, the options specified with
2203 @code{make-network-process} are not inherited by the client
2204 connections, so you will need to set the necessary options for each
2205 child connection as it is created.
2206
2207 @table @asis
2208 @item :bindtodevice @var{device-name}
2209 If @var{device-name} is a non-empty string identifying a network
2210 interface name (see @code{network-interface-list}), only handle
2211 packets received on that interface. If @var{device-name} is @code{nil}
2212 (the default), handle packets received on any interface.
2213
2214 Using this option may require special privileges on some systems.
2215
2216 @item :broadcast @var{broadcast-flag}
2217 If @var{broadcast-flag} is non-@code{nil} for a datagram process, the
2218 process will receive datagram packet sent to a broadcast address, and
2219 be able to send packets to a broadcast address. Ignored for a stream
2220 connection.
2221
2222 @item :dontroute @var{dontroute-flag}
2223 If @var{dontroute-flag} is non-@code{nil}, the process can only send
2224 to hosts on the same network as the local host.
2225
2226 @item :keepalive @var{keepalive-flag}
2227 If @var{keepalive-flag} is non-@code{nil} for a stream connection,
2228 enable exchange of low-level keep-alive messages.
2229
2230 @item :linger @var{linger-arg}
2231 If @var{linger-arg} is non-@code{nil}, wait for successful
2232 transmission of all queued packets on the connection before it is
2233 deleted (see @code{delete-process}). If @var{linger-arg} is an
2234 integer, it specifies the maximum time in seconds to wait for queued
2235 packets to be sent before closing the connection. Default is
2236 @code{nil} which means to discard unsent queued packets when the
2237 process is deleted.
2238
2239 @item :oobinline @var{oobinline-flag}
2240 If @var{oobinline-flag} is non-@code{nil} for a stream connection,
2241 receive out-of-band data in the normal data stream. Otherwise, ignore
2242 out-of-band data.
2243
2244 @item :priority @var{priority}
2245 Set the priority for packets sent on this connection to the integer
2246 @var{priority}. The interpretation of this number is protocol
2247 specific, such as setting the TOS (type of service) field on IP
2248 packets sent on this connection. It may also have system dependent
2249 effects, such as selecting a specific output queue on the network
2250 interface.
2251
2252 @item :reuseaddr @var{reuseaddr-flag}
2253 If @var{reuseaddr-flag} is non-@code{nil} (the default) for a stream
2254 server process, allow this server to reuse a specific port number (see
2255 @code{:service}) unless another process on this host is already
2256 listening on that port. If @var{reuseaddr-flag} is @code{nil}, there
2257 may be a period of time after the last use of that port (by any
2258 process on the host), where it is not possible to make a new server on
2259 that port.
2260 @end table
2261
2262 @defun set-network-process-option process option value &optional no-error
2263 This function sets or modifies a network option for network process
2264 @var{process}. See @code{make-network-process} for details of options
2265 @var{option} and their corresponding values @var{value}. If
2266 @var{no-error} is non-@code{nil}, this function returns @code{nil}
2267 instead of signaling an error if @var{option} is not a supported
2268 option. If the function successfully completes, it returns @code{t}.
2269
2270 The current setting of an option is available via the
2271 @code{process-contact} function.
2272 @end defun
2273
2274 @node Network Feature Testing
2275 @subsection Testing Availability of Network Features
2276
2277 To test for the availability of a given network feature, use
2278 @code{featurep} like this:
2279
2280 @example
2281 (featurep 'make-network-process '(@var{keyword} @var{value}))
2282 @end example
2283
2284 @noindent
2285 The result of the first form is @code{t} if it works to specify
2286 @var{keyword} with value @var{value} in @code{make-network-process}.
2287 The result of the second form is @code{t} if @var{keyword} is
2288 supported by @code{make-network-process}. Here are some of the
2289 @var{keyword}---@var{value} pairs you can test in
2290 this way.
2291
2292 @table @code
2293 @item (:nowait t)
2294 Non-@code{nil} if non-blocking connect is supported.
2295 @item (:type datagram)
2296 Non-@code{nil} if datagrams are supported.
2297 @item (:family local)
2298 Non-@code{nil} if local (a.k.a.@: ``UNIX domain'') sockets are supported.
2299 @item (:family ipv6)
2300 Non-@code{nil} if IPv6 is supported.
2301 @item (:service t)
2302 Non-@code{nil} if the system can select the port for a server.
2303 @end table
2304
2305 To test for the availability of a given network option, use
2306 @code{featurep} like this:
2307
2308 @example
2309 (featurep 'make-network-process '@var{keyword})
2310 @end example
2311
2312 @noindent
2313 Here are some of the options you can test in this way.
2314
2315 @table @code
2316 @item :bindtodevice
2317 @itemx :broadcast
2318 @itemx :dontroute
2319 @itemx :keepalive
2320 @itemx :linger
2321 @itemx :oobinline
2322 @itemx :priority
2323 @itemx :reuseaddr
2324 That particular network option is supported by
2325 @code{make-network-process} and @code{set-network-process-option}.
2326 @end table
2327
2328 @node Misc Network
2329 @section Misc Network Facilities
2330
2331 These additional functions are useful for creating and operating
2332 on network connections. Note that they are supported only on some
2333 systems.
2334
2335 @defun network-interface-list
2336 This function returns a list describing the network interfaces
2337 of the machine you are using. The value is an alist whose
2338 elements have the form @code{(@var{name} . @var{address})}.
2339 @var{address} has the same form as the @var{local-address}
2340 and @var{remote-address} arguments to @code{make-network-process}.
2341 @end defun
2342
2343 @defun network-interface-info ifname
2344 This function returns information about the network interface named
2345 @var{ifname}. The value is a list of the form
2346 @code{(@var{addr} @var{bcast} @var{netmask} @var{hwaddr} @var{flags})}.
2347
2348 @table @var
2349 @item addr
2350 The Internet protocol address.
2351 @item bcast
2352 The broadcast address.
2353 @item netmask
2354 The network mask.
2355 @item hwaddr
2356 The layer 2 address (Ethernet MAC address, for instance).
2357 @item flags
2358 The current flags of the interface.
2359 @end table
2360 @end defun
2361
2362 @defun format-network-address address &optional omit-port
2363 This function converts the Lisp representation of a network address to
2364 a string.
2365
2366 A five-element vector @code{[@var{a} @var{b} @var{c} @var{d} @var{p}]}
2367 represents an IPv4 address @var{a}.@var{b}.@var{c}.@var{d} and port
2368 number @var{p}. @code{format-network-address} converts that to the
2369 string @code{"@var{a}.@var{b}.@var{c}.@var{d}:@var{p}"}.
2370
2371 A nine-element vector @code{[@var{a} @var{b} @var{c} @var{d} @var{e}
2372 @var{f} @var{g} @var{h} @var{p}]} represents an IPv6 address along
2373 with a port number. @code{format-network-address} converts that to
2374 the string
2375 @code{"[@var{a}:@var{b}:@var{c}:@var{d}:@var{e}:@var{f}:@var{g}:@var{h}]:@var{p}"}.
2376
2377 If the vector does not include the port number, @var{p}, or if
2378 @var{omit-port} is non-@code{nil}, the result does not include the
2379 @code{:@var{p}} suffix.
2380 @end defun
2381
2382 @node Serial Ports
2383 @section Communicating with Serial Ports
2384 @cindex @file{/dev/tty}
2385 @cindex @file{COM1}
2386 @cindex serial connections
2387
2388 Emacs can communicate with serial ports. For interactive use,
2389 @kbd{M-x serial-term} opens a terminal window. In a Lisp program,
2390 @code{make-serial-process} creates a process object.
2391
2392 The serial port can be configured at run-time, without having to
2393 close and re-open it. The function @code{serial-process-configure}
2394 lets you change the speed, bytesize, and other parameters. In a
2395 terminal window created by @code{serial-term}, you can click on the
2396 mode line for configuration.
2397
2398 A serial connection is represented by a process object which can be
2399 used similar to a subprocess or network process. You can send and
2400 receive data and configure the serial port. A serial process object
2401 has no process ID, you can't send signals to it, and the status codes
2402 are different from other types of processes.
2403 @code{delete-process} on the process object or @code{kill-buffer} on
2404 the process buffer close the connection, but this does not affect the
2405 device connected to the serial port.
2406
2407 The function @code{process-type} returns the symbol @code{serial}
2408 for a process object representing a serial port connection.
2409
2410 Serial ports are available on GNU/Linux, Unix, and Windows systems.
2411
2412 @deffn Command serial-term port speed
2413 Start a terminal-emulator for a serial port in a new buffer.
2414 @var{port} is the name of the serial port to which to connect. For
2415 example, this could be @file{/dev/ttyS0} on Unix. On Windows, this
2416 could be @file{COM1}, or @file{\\.\COM10} (double the backslashes in
2417 Lisp strings).
2418
2419 @var{speed} is the speed of the serial port in bits per second. 9600
2420 is a common value. The buffer is in Term mode; see @ref{Term Mode,,,
2421 emacs, The GNU Emacs Manual}, for the commands to use in that buffer.
2422 You can change the speed and the configuration in the mode line menu.
2423 @end deffn
2424
2425 @defun make-serial-process &rest args
2426 This function creates a process and a buffer. Arguments are specified
2427 as keyword/argument pairs. Here's the list of the meaningful keywords:
2428
2429 @table @code
2430 @item :port @var{port}@r{ (mandatory)}
2431 This is the name of the serial port. On Unix and GNU systems, this is
2432 a file name such as @file{/dev/ttyS0}. On Windows, this could be
2433 @file{COM1}, or @file{\\.\COM10} for ports higher than @file{COM9}
2434 (double the backslashes in Lisp strings).
2435
2436 @item :speed @var{speed}@r{ (mandatory)}
2437 The speed of the serial port in bits per second. This function calls
2438 @code{serial-process-configure} to handle the speed.
2439
2440 @item :name @var{name}
2441 The name of the process. If @var{name} is not given, @var{port} will
2442 serve as the process name as well.
2443
2444 @item :buffer @var{buffer}
2445 The buffer to associate with the process. The value could be either a
2446 buffer or a string that names a buffer. Process output goes at the
2447 end of that buffer, unless you specify an output stream or filter
2448 function to handle the output. If @var{buffer} is not given, the
2449 process buffer's name is taken from the value of the @code{:name}
2450 keyword.
2451
2452 @item :coding @var{coding}
2453 If @var{coding} is a symbol, it specifies the coding system used for
2454 both reading and writing for this process. If @var{coding} is a cons
2455 @code{(decoding . encoding)}, @var{decoding} is used for reading, and
2456 @var{encoding} is used for writing. If not specified, the default is
2457 to determine the coding systems from data itself.
2458
2459 @item :noquery @var{query-flag}
2460 Initialize the process query flag to @var{query-flag}. @xref{Query
2461 Before Exit}. The flags defaults to @code{nil} if unspecified.
2462
2463 @item :stop @var{bool}
2464 Start process in the @code{stopped} state if @var{bool} is
2465 non-@code{nil}. In the stopped state, a serial process does not
2466 accept incoming data, but you can send outgoing data. The stopped
2467 state is cleared by @code{continue-process} and set by
2468 @code{stop-process}.
2469
2470 @item :filter @var{filter}
2471 Install @var{filter} as the process filter.
2472
2473 @item :sentinel @var{sentinel}
2474 Install @var{sentinel} as the process sentinel.
2475
2476 @item :plist @var{plist}
2477 Install @var{plist} as the initial plist of the process.
2478
2479 @item :speed
2480 @itemx :bytesize
2481 @itemx :parity
2482 @itemx :stopbits
2483 @itemx :flowcontrol
2484 These arguments are handled by @code{serial-process-configure}, which
2485 is called by @code{make-serial-process}.
2486 @end table
2487
2488 The original argument list, possibly modified by later configuration,
2489 is available via the function @code{process-contact}.
2490
2491 Examples:
2492
2493 @example
2494 (make-serial-process :port "/dev/ttyS0" :speed 9600)
2495
2496 (make-serial-process :port "COM1" :speed 115200 :stopbits 2)
2497
2498 (make-serial-process :port "\\\\.\\COM13" :speed 1200
2499 :bytesize 7 :parity 'odd)
2500
2501 (make-serial-process :port "/dev/tty.BlueConsole-SPP-1"
2502 :speed nil)
2503 @end example
2504 @end defun
2505
2506 @defun serial-process-configure &rest args
2507 @cindex baud, in serial connections
2508 @cindex bytesize, in serial connections
2509 @cindex parity, in serial connections
2510 @cindex stopbits, in serial connections
2511 @cindex flowcontrol, in serial connections
2512
2513 This functions configures a serial port connection. Arguments are
2514 specified as keyword/argument pairs. Attributes that are not given
2515 are re-initialized from the process's current configuration (available
2516 via the function @code{process-contact}) or set to reasonable default
2517 values. The following arguments are defined:
2518
2519 @table @code
2520 @item :process @var{process}
2521 @itemx :name @var{name}
2522 @itemx :buffer @var{buffer}
2523 @itemx :port @var{port}
2524 Any of these arguments can be given to identify the process that is to
2525 be configured. If none of these arguments is given, the current
2526 buffer's process is used.
2527
2528 @item :speed @var{speed}
2529 The speed of the serial port in bits per second, a.k.a.@: @dfn{baud
2530 rate}. The value can be any number, but most serial ports work only
2531 at a few defined values between 1200 and 115200, with 9600 being the
2532 most common value. If @var{speed} is @code{nil}, the function ignores
2533 all other arguments and does not configure the port. This may be
2534 useful for special serial ports such as Bluetooth-to-serial converters
2535 which can only be configured through AT commands sent through the
2536 connection. The value of @code{nil} for @var{speed} is valid only for
2537 connections that were already opened by a previous call to
2538 @code{make-serial-process} or @code{serial-term}.
2539
2540 @item :bytesize @var{bytesize}
2541 The number of bits per byte, which can be 7 or 8. If @var{bytesize}
2542 is not given or @code{nil}, it defaults to 8.
2543
2544 @item :parity @var{parity}
2545 The value can be @code{nil} (don't use parity), the symbol
2546 @code{odd} (use odd parity), or the symbol @code{even} (use even
2547 parity). If @var{parity} is not given, it defaults to no parity.
2548
2549 @item :stopbits @var{stopbits}
2550 The number of stopbits used to terminate a transmission
2551 of each byte. @var{stopbits} can be 1 or 2. If @var{stopbits} is not
2552 given or @code{nil}, it defaults to 1.
2553
2554 @item :flowcontrol @var{flowcontrol}
2555 The type of flow control to use for this connection, which is either
2556 @code{nil} (don't use flow control), the symbol @code{hw} (use RTS/CTS
2557 hardware flow control), or the symbol @code{sw} (use XON/XOFF software
2558 flow control). If @var{flowcontrol} is not given, it defaults to no
2559 flow control.
2560 @end table
2561
2562 @code{serial-process-configure} is called by @code{make-serial-process} for the
2563 initial configuration of the serial port.
2564
2565 Examples:
2566
2567 @example
2568 (serial-process-configure :process "/dev/ttyS0" :speed 1200)
2569
2570 (serial-process-configure :buffer "COM1" :stopbits 1
2571 :parity 'odd :flowcontrol 'hw)
2572
2573 (serial-process-configure :port "\\\\.\\COM13" :bytesize 7)
2574 @end example
2575 @end defun
2576
2577 @node Byte Packing
2578 @section Packing and Unpacking Byte Arrays
2579 @cindex byte packing and unpacking
2580
2581 This section describes how to pack and unpack arrays of bytes,
2582 usually for binary network protocols. These functions convert byte arrays
2583 to alists, and vice versa. The byte array can be represented as a
2584 unibyte string or as a vector of integers, while the alist associates
2585 symbols either with fixed-size objects or with recursive sub-alists.
2586
2587 @cindex serializing
2588 @cindex deserializing
2589 @cindex packing
2590 @cindex unpacking
2591 Conversion from byte arrays to nested alists is also known as
2592 @dfn{deserializing} or @dfn{unpacking}, while going in the opposite
2593 direction is also known as @dfn{serializing} or @dfn{packing}.
2594
2595 @menu
2596 * Bindat Spec:: Describing data layout.
2597 * Bindat Functions:: Doing the unpacking and packing.
2598 * Bindat Examples:: Samples of what bindat.el can do for you!
2599 @end menu
2600
2601 @node Bindat Spec
2602 @subsection Describing Data Layout
2603
2604 To control unpacking and packing, you write a @dfn{data layout
2605 specification}, a special nested list describing named and typed
2606 @dfn{fields}. This specification controls length of each field to be
2607 processed, and how to pack or unpack it. We normally keep bindat specs
2608 in variables whose names end in @samp{-bindat-spec}; that kind of name
2609 is automatically recognized as ``risky.''
2610
2611 @cindex endianness
2612 @cindex big endian
2613 @cindex little endian
2614 @cindex network byte ordering
2615 A field's @dfn{type} describes the size (in bytes) of the object
2616 that the field represents and, in the case of multibyte fields, how
2617 the bytes are ordered within the field. The two possible orderings
2618 are ``big endian'' (also known as ``network byte ordering'') and
2619 ``little endian.'' For instance, the number @code{#x23cd} (decimal
2620 9165) in big endian would be the two bytes @code{#x23} @code{#xcd};
2621 and in little endian, @code{#xcd} @code{#x23}. Here are the possible
2622 type values:
2623
2624 @table @code
2625 @item u8
2626 @itemx byte
2627 Unsigned byte, with length 1.
2628
2629 @item u16
2630 @itemx word
2631 @itemx short
2632 Unsigned integer in network byte order, with length 2.
2633
2634 @item u24
2635 Unsigned integer in network byte order, with length 3.
2636
2637 @item u32
2638 @itemx dword
2639 @itemx long
2640 Unsigned integer in network byte order, with length 4.
2641 Note: These values may be limited by Emacs' integer implementation limits.
2642
2643 @item u16r
2644 @itemx u24r
2645 @itemx u32r
2646 Unsigned integer in little endian order, with length 2, 3 and 4, respectively.
2647
2648 @item str @var{len}
2649 String of length @var{len}.
2650
2651 @item strz @var{len}
2652 Zero-terminated string, in a fixed-size field with length @var{len}.
2653
2654 @item vec @var{len} [@var{type}]
2655 Vector of @var{len} elements of type @var{type}, or bytes if not
2656 @var{type} is specified.
2657 The @var{type} is any of the simple types above, or another vector
2658 specified as a list @code{(vec @var{len} [@var{type}])}.
2659
2660 @item ip
2661 Four-byte vector representing an Internet address. For example:
2662 @code{[127 0 0 1]} for localhost.
2663
2664 @item bits @var{len}
2665 List of set bits in @var{len} bytes. The bytes are taken in big
2666 endian order and the bits are numbered starting with @code{8 *
2667 @var{len} @minus{} 1} and ending with zero. For example: @code{bits
2668 2} unpacks @code{#x28} @code{#x1c} to @code{(2 3 4 11 13)} and
2669 @code{#x1c} @code{#x28} to @code{(3 5 10 11 12)}.
2670
2671 @item (eval @var{form})
2672 @var{form} is a Lisp expression evaluated at the moment the field is
2673 unpacked or packed. The result of the evaluation should be one of the
2674 above-listed type specifications.
2675 @end table
2676
2677 For a fixed-size field, the length @var{len} is given as an integer
2678 specifying the number of bytes in the field.
2679
2680 When the length of a field is not fixed, it typically depends on the
2681 value of a preceding field. In this case, the length @var{len} can be
2682 given either as a list @code{(@var{name} ...)} identifying a
2683 @dfn{field name} in the format specified for @code{bindat-get-field}
2684 below, or by an expression @code{(eval @var{form})} where @var{form}
2685 should evaluate to an integer, specifying the field length.
2686
2687 A field specification generally has the form @code{([@var{name}]
2688 @var{handler})}. The square braces indicate that @var{name} is
2689 optional. (Don't use names that are symbols meaningful as type
2690 specifications (above) or handler specifications (below), since that
2691 would be ambiguous.) @var{name} can be a symbol or the expression
2692 @code{(eval @var{form})}, in which case @var{form} should evaluate to
2693 a symbol.
2694
2695 @var{handler} describes how to unpack or pack the field and can be one
2696 of the following:
2697
2698 @table @code
2699 @item @var{type}
2700 Unpack/pack this field according to the type specification @var{type}.
2701
2702 @item eval @var{form}
2703 Evaluate @var{form}, a Lisp expression, for side-effect only. If the
2704 field name is specified, the value is bound to that field name.
2705
2706 @item fill @var{len}
2707 Skip @var{len} bytes. In packing, this leaves them unchanged,
2708 which normally means they remain zero. In unpacking, this means
2709 they are ignored.
2710
2711 @item align @var{len}
2712 Skip to the next multiple of @var{len} bytes.
2713
2714 @item struct @var{spec-name}
2715 Process @var{spec-name} as a sub-specification. This describes a
2716 structure nested within another structure.
2717
2718 @item union @var{form} (@var{tag} @var{spec})@dots{}
2719 @c ??? I don't see how one would actually use this.
2720 @c ??? what kind of expression would be useful for @var{form}?
2721 Evaluate @var{form}, a Lisp expression, find the first @var{tag}
2722 that matches it, and process its associated data layout specification
2723 @var{spec}. Matching can occur in one of three ways:
2724
2725 @itemize
2726 @item
2727 If a @var{tag} has the form @code{(eval @var{expr})}, evaluate
2728 @var{expr} with the variable @code{tag} dynamically bound to the value
2729 of @var{form}. A non-@code{nil} result indicates a match.
2730
2731 @item
2732 @var{tag} matches if it is @code{equal} to the value of @var{form}.
2733
2734 @item
2735 @var{tag} matches unconditionally if it is @code{t}.
2736 @end itemize
2737
2738 @item repeat @var{count} @var{field-specs}@dots{}
2739 Process the @var{field-specs} recursively, in order, then repeat
2740 starting from the first one, processing all the specs @var{count}
2741 times overall. The @var{count} is given using the same formats as a
2742 field length---if an @code{eval} form is used, it is evaluated just once.
2743 For correct operation, each spec in @var{field-specs} must include a name.
2744 @end table
2745
2746 For the @code{(eval @var{form})} forms used in a bindat specification,
2747 the @var{form} can access and update these dynamically bound variables
2748 during evaluation:
2749
2750 @table @code
2751 @item last
2752 Value of the last field processed.
2753
2754 @item bindat-raw
2755 The data as a byte array.
2756
2757 @item bindat-idx
2758 Current index (within @code{bindat-raw}) for unpacking or packing.
2759
2760 @item struct
2761 The alist containing the structured data that have been unpacked so
2762 far, or the entire structure being packed. You can use
2763 @code{bindat-get-field} to access specific fields of this structure.
2764
2765 @item count
2766 @itemx index
2767 Inside a @code{repeat} block, these contain the maximum number of
2768 repetitions (as specified by the @var{count} parameter), and the
2769 current repetition number (counting from 0). Setting @code{count} to
2770 zero will terminate the inner-most repeat block after the current
2771 repetition has completed.
2772 @end table
2773
2774 @node Bindat Functions
2775 @subsection Functions to Unpack and Pack Bytes
2776
2777 In the following documentation, @var{spec} refers to a data layout
2778 specification, @code{bindat-raw} to a byte array, and @var{struct} to an
2779 alist representing unpacked field data.
2780
2781 @defun bindat-unpack spec bindat-raw &optional bindat-idx
2782 This function unpacks data from the unibyte string or byte
2783 array @code{bindat-raw}
2784 according to @var{spec}. Normally this starts unpacking at the
2785 beginning of the byte array, but if @var{bindat-idx} is non-@code{nil}, it
2786 specifies a zero-based starting position to use instead.
2787
2788 The value is an alist or nested alist in which each element describes
2789 one unpacked field.
2790 @end defun
2791
2792 @defun bindat-get-field struct &rest name
2793 This function selects a field's data from the nested alist
2794 @var{struct}. Usually @var{struct} was returned by
2795 @code{bindat-unpack}. If @var{name} corresponds to just one argument,
2796 that means to extract a top-level field value. Multiple @var{name}
2797 arguments specify repeated lookup of sub-structures. An integer name
2798 acts as an array index.
2799
2800 For example, if @var{name} is @code{(a b 2 c)}, that means to find
2801 field @code{c} in the third element of subfield @code{b} of field
2802 @code{a}. (This corresponds to @code{struct.a.b[2].c} in C.)
2803 @end defun
2804
2805 Although packing and unpacking operations change the organization of
2806 data (in memory), they preserve the data's @dfn{total length}, which is
2807 the sum of all the fields' lengths, in bytes. This value is not
2808 generally inherent in either the specification or alist alone; instead,
2809 both pieces of information contribute to its calculation. Likewise, the
2810 length of a string or array being unpacked may be longer than the data's
2811 total length as described by the specification.
2812
2813 @defun bindat-length spec struct
2814 This function returns the total length of the data in @var{struct},
2815 according to @var{spec}.
2816 @end defun
2817
2818 @defun bindat-pack spec struct &optional bindat-raw bindat-idx
2819 This function returns a byte array packed according to @var{spec} from
2820 the data in the alist @var{struct}. Normally it creates and fills a
2821 new byte array starting at the beginning. However, if @var{bindat-raw}
2822 is non-@code{nil}, it specifies a pre-allocated unibyte string or vector to
2823 pack into. If @var{bindat-idx} is non-@code{nil}, it specifies the starting
2824 offset for packing into @code{bindat-raw}.
2825
2826 When pre-allocating, you should make sure @code{(length @var{bindat-raw})}
2827 meets or exceeds the total length to avoid an out-of-range error.
2828 @end defun
2829
2830 @defun bindat-ip-to-string ip
2831 Convert the Internet address vector @var{ip} to a string in the usual
2832 dotted notation.
2833
2834 @example
2835 (bindat-ip-to-string [127 0 0 1])
2836 @result{} "127.0.0.1"
2837 @end example
2838 @end defun
2839
2840 @node Bindat Examples
2841 @subsection Examples of Byte Unpacking and Packing
2842
2843 Here is a complete example of byte unpacking and packing:
2844
2845 @lisp
2846 (defvar fcookie-index-spec
2847 '((:version u32)
2848 (:count u32)
2849 (:longest u32)
2850 (:shortest u32)
2851 (:flags u32)
2852 (:delim u8)
2853 (:ignored fill 3)
2854 (:offset repeat (:count)
2855 (:foo u32)))
2856 "Description of a fortune cookie index file's contents.")
2857
2858 (defun fcookie (cookies &optional index)
2859 "Display a random fortune cookie from file COOKIES.
2860 Optional second arg INDEX specifies the associated index
2861 filename, which is by default constructed by appending
2862 \".dat\" to COOKIES. Display cookie text in possibly
2863 new buffer \"*Fortune Cookie: BASENAME*\" where BASENAME
2864 is COOKIES without the directory part."
2865 (interactive "fCookies file: ")
2866 (let* ((info (with-temp-buffer
2867 (insert-file-contents-literally
2868 (or index (concat cookies ".dat")))
2869 (bindat-unpack fcookie-index-spec
2870 (buffer-string))))
2871 (sel (random (bindat-get-field info :count)))
2872 (beg (cdar (bindat-get-field info :offset sel)))
2873 (end (or (cdar (bindat-get-field info
2874 :offset (1+ sel)))
2875 (nth 7 (file-attributes cookies)))))
2876 (switch-to-buffer
2877 (get-buffer-create
2878 (format "*Fortune Cookie: %s*"
2879 (file-name-nondirectory cookies))))
2880 (erase-buffer)
2881 (insert-file-contents-literally
2882 cookies nil beg (- end 3))))
2883
2884 (defun fcookie-create-index (cookies &optional index delim)
2885 "Scan file COOKIES, and write out its index file.
2886 Optional second arg INDEX specifies the index filename,
2887 which is by default constructed by appending \".dat\" to
2888 COOKIES. Optional third arg DELIM specifies the unibyte
2889 character which, when found on a line of its own in
2890 COOKIES, indicates the border between entries."
2891 (interactive "fCookies file: ")
2892 (setq delim (or delim ?%))
2893 (let ((delim-line (format "\n%c\n" delim))
2894 (count 0)
2895 (max 0)
2896 min p q len offsets)
2897 (unless (= 3 (string-bytes delim-line))
2898 (error "Delimiter cannot be represented in one byte"))
2899 (with-temp-buffer
2900 (insert-file-contents-literally cookies)
2901 (while (and (setq p (point))
2902 (search-forward delim-line (point-max) t)
2903 (setq len (- (point) 3 p)))
2904 (setq count (1+ count)
2905 max (max max len)
2906 min (min (or min max) len)
2907 offsets (cons (1- p) offsets))))
2908 (with-temp-buffer
2909 (set-buffer-multibyte nil)
2910 (insert
2911 (bindat-pack
2912 fcookie-index-spec
2913 `((:version . 2)
2914 (:count . ,count)
2915 (:longest . ,max)
2916 (:shortest . ,min)
2917 (:flags . 0)
2918 (:delim . ,delim)
2919 (:offset . ,(mapcar (lambda (o)
2920 (list (cons :foo o)))
2921 (nreverse offsets))))))
2922 (let ((coding-system-for-write 'raw-text-unix))
2923 (write-file (or index (concat cookies ".dat")))))))
2924 @end lisp
2925
2926 Following is an example of defining and unpacking a complex structure.
2927 Consider the following C structures:
2928
2929 @example
2930 struct header @{
2931 unsigned long dest_ip;
2932 unsigned long src_ip;
2933 unsigned short dest_port;
2934 unsigned short src_port;
2935 @};
2936
2937 struct data @{
2938 unsigned char type;
2939 unsigned char opcode;
2940 unsigned short length; /* In network byte order */
2941 unsigned char id[8]; /* null-terminated string */
2942 unsigned char data[/* (length + 3) & ~3 */];
2943 @};
2944
2945 struct packet @{
2946 struct header header;
2947 unsigned long counters[2]; /* In little endian order */
2948 unsigned char items;
2949 unsigned char filler[3];
2950 struct data item[/* items */];
2951
2952 @};
2953 @end example
2954
2955 The corresponding data layout specification:
2956
2957 @lisp
2958 (setq header-spec
2959 '((dest-ip ip)
2960 (src-ip ip)
2961 (dest-port u16)
2962 (src-port u16)))
2963
2964 (setq data-spec
2965 '((type u8)
2966 (opcode u8)
2967 (length u16) ;; network byte order
2968 (id strz 8)
2969 (data vec (length))
2970 (align 4)))
2971
2972 (setq packet-spec
2973 '((header struct header-spec)
2974 (counters vec 2 u32r) ;; little endian order
2975 (items u8)
2976 (fill 3)
2977 (item repeat (items)
2978 (struct data-spec))))
2979 @end lisp
2980
2981 A binary data representation:
2982
2983 @lisp
2984 (setq binary-data
2985 [ 192 168 1 100 192 168 1 101 01 28 21 32
2986 160 134 1 0 5 1 0 0 2 0 0 0
2987 2 3 0 5 ?A ?B ?C ?D ?E ?F 0 0 1 2 3 4 5 0 0 0
2988 1 4 0 7 ?B ?C ?D ?E ?F ?G 0 0 6 7 8 9 10 11 12 0 ])
2989 @end lisp
2990
2991 The corresponding decoded structure:
2992
2993 @lisp
2994 (setq decoded (bindat-unpack packet-spec binary-data))
2995 @result{}
2996 ((header
2997 (dest-ip . [192 168 1 100])
2998 (src-ip . [192 168 1 101])
2999 (dest-port . 284)
3000 (src-port . 5408))
3001 (counters . [100000 261])
3002 (items . 2)
3003 (item ((data . [1 2 3 4 5])
3004 (id . "ABCDEF")
3005 (length . 5)
3006 (opcode . 3)
3007 (type . 2))
3008 ((data . [6 7 8 9 10 11 12])
3009 (id . "BCDEFG")
3010 (length . 7)
3011 (opcode . 4)
3012 (type . 1))))
3013 @end lisp
3014
3015 Fetching data from this structure:
3016
3017 @lisp
3018 (bindat-get-field decoded 'item 1 'id)
3019 @result{} "BCDEFG"
3020 @end lisp
3021
3022 @ignore
3023 arch-tag: ba9da253-e65f-4e7f-b727-08fba0a1df7a
3024 @end ignore