diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2016-01-18 06:20:39 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2016-01-18 06:20:39 +0200 |
commit | 07795bbecb05b4d2d52bd8808c713b0c5ece7b3b (patch) | |
tree | 6e0f5c49db9da0d8cd2093394e2bae0f8897b46e /doc/gawk.texi | |
parent | dd53cb380cc913ea1c2fa1a7df74c903adb2ef1a (diff) | |
download | egawk-07795bbecb05b4d2d52bd8808c713b0c5ece7b3b.tar.gz egawk-07795bbecb05b4d2d52bd8808c713b0c5ece7b3b.tar.bz2 egawk-07795bbecb05b4d2d52bd8808c713b0c5ece7b3b.zip |
Improve doc on coprocesses.
Diffstat (limited to 'doc/gawk.texi')
-rw-r--r-- | doc/gawk.texi | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/doc/gawk.texi b/doc/gawk.texi index f38eff49..f8c3a859 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -27477,10 +27477,27 @@ print @dots{} |& command # start two-way pipe @end example @noindent -Using ptys usually avoids the buffer deadlock issues described earlier, at some -loss in performance. If your system does not have ptys, or if all the -system's ptys are in use, @command{gawk} automatically falls back to -using regular pipes. +If your system does not have ptys, or if all the system's ptys are in use, +@command{gawk} automatically falls back to using regular pipes. + +Using ptys usually avoids the buffer deadlock issues described earlier, +at some loss in performance. This is because the tty driver buffers +and sends data line-by-line. On systems with the @command{stdbuf} +(part of the @uref{http://www.gnu.org/software/coreutils/coreutils.html, +GNU Coreutils package}), you can use that program instead of ptys. + +Note also that ptys are not fully transparent. Certain binary control +codes, such @kbd{Ctrl-d} for end-of-file, are interpreted by the tty +driver and not passed through. + +@quotation CAUTION +Finally, coprocesses open up the possibility of @dfn{deadlock} between +@command{gawk} and the program running in the coprocess. This can occur +if you send ``too much'' data to the coprocess before reading any back; +each process is blocked writing data with noone available to read what +they've already written. There is no workaround for deadlock; careful +programming and knowledge of the behavior of the coprocess are required. +@end quotation @node TCP/IP Networking @section Using @command{gawk} for Network Programming |