[#] Сопроцессы: -что, -как, -зачем?
habrabot(difrex,1) — All
2016-08-12 22:30:04


Многие пользователи _Bash_ знают о существании со-процессов, появившихся в 4-й версии _Bash'a_. Несколько меньшее количество знает о том, что сопроцессы в _Bash_ не какая-то новая фича, а древний функционал _KornShell'a_ появившийся ещё в реализации _ksh88_ в 1988 году. Ещё меньшее количество пользователей shell'ов умеющих сопроцессить знают синтаксис и помнят как это делать.
Вероятно, я отношусь к четвёртой группе — знающих о сопроцессах, периодически умеющих ими пользоваться но так и не понимающих «зачем?». Я говорю «периодически», так как иногда я освежаю в голове их синтаксис, но к тому моменту, когда мне кажется что «вот тот случай когда можно применить co-proc» я уже напрочь забываю о том как это делать.
Этой заметкой я хочу свести воедино синтаксисы для разных шеллов чтобы на случай, если таки придумаю зачем они мне нужны, я если и не вспомню как это делать, то по крайней мере, буду знать где это записано.
В заголовке статьи у нас 3 вопроса. Пойдём по порядку.

**Что?**
Что же такое co-process?
Со-процессинг — это одновременное выполнение двух процедур, одна из которых считывает вывод другой. Для его реализации необходимо предварительно запустить **фоновый** процесс выполняющий функционал **канала**. При запуске фонового процесса его _stdin_ и _stdout_ присваиваются каналам связанными с пользовательскими процессами. Соответственно, один канал для записи, второй для чтения.
Пояснять это проще на примерах, поэтому сразу перейдём ко второму вопросу.
[Читать дальше →][1]

[1]: https://habrahabr.ru/post/307562/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut