У меня есть программа, P
которая ожидает получить «Hello» и вывод «Почему?» перед предоставлением функции. Эта функция используется другими программами, которые не знают, что общение с «Hello» является обычной вежливостью. Таким образом, я хочу написать оболочку для P
этого работает так (синтаксис zsh):
coproc P
print -p Hello # Send Hello to P
read -pr line # Read what P has to say
[[ "$line" = "Why?" ]] && Replace current process with the coprocess.
echo Could not get P's attention.
Использование cat
или dd
в Replace...
части (что-то вроде cat <&p &; exec cat >&p
) приводит к ненужной буферизации. Какие у меня варианты?
bash
решением, которое не применимо zsh
, но, безусловно, примет его »
ssh
и его вариантом ProxyCommand
.
cat
как правило, не буферизуется. Если это происходит в вашей системе, попробуйте cat -u
.
zsh
решение илиbash
решение приемлемо?