diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2003-05-02 10:25:27 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2003-05-02 10:25:27 +0000 |
commit | 94da86f7956af9d6855c12d79d757b961bf0c2a4 (patch) | |
tree | b1f29cf6076db0a33f9e923101816756d9be8508 /Doc/Zsh/redirect.yo | |
parent | d9274f5126ebd0ddb2902c0788d51ef57836b02b (diff) | |
download | zsh-94da86f7956af9d6855c12d79d757b961bf0c2a4.tar.gz zsh-94da86f7956af9d6855c12d79d757b961bf0c2a4.tar.xz zsh-94da86f7956af9d6855c12d79d757b961bf0c2a4.zip |
18492: Provide partial fix for multios and output process substitution
asynchronicity problem. Document workarounds for remaining problems.
Diffstat (limited to 'Doc/Zsh/redirect.yo')
-rw-r--r-- | Doc/Zsh/redirect.yo | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Doc/Zsh/redirect.yo b/Doc/Zsh/redirect.yo index a8c2b907c..2e48aa7ab 100644 --- a/Doc/Zsh/redirect.yo +++ b/Doc/Zsh/redirect.yo @@ -209,6 +209,28 @@ example(echo foo > bar > baz) when tt(MULTIOS) is unset will truncate bar, and write `tt(foo)' into baz. +There is a problem when an output multio is attached to an external +program. A simple example shows this: + +example(cat file >file1 >file2 +cat file1 file2) + +Here, it is possible that the second `tt(cat)' will not display the full +contents of tt(file1) and tt(file2) (i.e. the original contents of +tt(file) repeated twice). + +The reason for this is that the multios are spawned after the tt(cat) +process is forked from the parent shell, so the parent shell does not +wait for the multios to finish writing data. This means the command as +shown can exit before tt(file1) and tt(file2) are completely written. +As a workaround, it is possible to run the tt(cat) process as part of a +job in the current shell: + +example({ cat file } >file >file2) + +Here, the tt({)var(...)tt(}) job will pause to wait for both files to be +written. + sect(Redirections with no command) When a simple command consists of one or more redirection operators and zero or more parameter assignments, but no command name, zsh can |