summaryrefslogtreecommitdiffstats
path: root/doc/chan.n
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2016-07-26 10:09:06 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2016-07-26 10:09:06 (GMT)
commitc88235bd9536704f9a089f9e7a90440c75acc45c (patch)
tree3ffab7cf6841f58dc71fc3b4f5ad51cce93d30e1 /doc/chan.n
parentb13a6ff66c6185e802dae4ab0153b5576f49886d (diff)
parentc8206cd0eabcf7418eb982e0b8e5d680a46e68c9 (diff)
downloadtcl-c88235bd9536704f9a089f9e7a90440c75acc45c.zip
tcl-c88235bd9536704f9a089f9e7a90440c75acc45c.tar.gz
tcl-c88235bd9536704f9a089f9e7a90440c75acc45c.tar.bz2
[db0a5f6417] Make a few tests resilient to differences in semantics of pipes between OSs.
Diffstat (limited to 'doc/chan.n')
-rw-r--r--doc/chan.n12
1 files changed, 12 insertions, 0 deletions
diff --git a/doc/chan.n b/doc/chan.n
index 36d56f8..81aa9f4 100644
--- a/doc/chan.n
+++ b/doc/chan.n
@@ -549,6 +549,18 @@ this, spawn with "2>@" or
">@" redirection operators onto the write side of a pipe, and then
immediately close it in the parent. This is necessary to get an EOF on
the read side once the child has exited or otherwise closed its output.
+.RS
+.PP
+Note that the pipe buffering semantics can vary at the operating system level
+substantially; it is not safe to assume that a write performed on the output
+side of the pipe will appear instantly to the input side. This is a
+fundamental difference and Tcl cannot conceal it. The overall stream semantics
+\fIare\fR compatible, so blocking reads and writes will not see most of the
+differences, but the details of what exactly gets written when are not. This
+is most likely to show up when using pipelines for testing; care should be
+taken to ensure that deadlocks do not occur and that potential short reads are
+allowed for.
+.RE
.VE 8.6
.TP
\fBchan pop \fIchannelId\fR