Re: Трубопровод в Linux
On Sat, 14 Jan 2006 11:39:39 +0200
Konstantin Korikov <lostcl***@i*****.ua> wrote:
> > > > > Напротив, данные принятые от пользователя нужно проверять, и при
> > > > только после прекращения работы конвеера, когда результат уже будет получен.
> > > А почему не во время?
> > [user]# other_prog1 | my_prog | other_prog2 | other_prog3
> > И когда?
> В данном случаи my_prog при обнаружении ошибки в данных должна выдать
> сообщение на stderr и завершить работу с ненулевым кодом.
Согласен, полный коментарий в конце письма.
> $ ls | gunzip |gunzip
> gunzip: stdin: not in gzip format
> gunzip: stdin: unexpected end of file
> $ echo $?
> 1
По логике *nix систем результат предсказуем. Коментраий в конце.
> Тогда почему other_prog2 должна получать полные и
> правильные данные или совсем их не получать или совсем не выполнятся,
> если my_prog получает ошибочные данные?
Согласен, other_prog2 в принципе не должна даже запуститься.
>Если пользователь хочет
> $ other_prog1 >tmp_file1 &&
> my_prog tmp_file1 >tmp_file2 &&
> other_prog2 tmp_file2 >tmp_file3 &&
> other_prog3 tmp_file3
> $ rm tmp_file1 tmp_file2 tmp_file3
Коментарий в конце письма.
> В том то и дело что пример некорректный.
> $ find -type f -exec grep -H word \{\} \;
^^^^
Спасибо, знал, но не догадывался ;)
> > > > 1) Выдать в stderr сообщение об ошибке, а в stdin не выдавать ни чего.
> > > Обычно так и происходит.
> > Обычно да, но существуют необычные, но возможные ситуации.
> Вот я и хочу понять что это за ситуации. Вдруг и мне пригодится.
Обещанный коментарий: Наверное я очень сильно испорчен оффтопом. Начинал когда-то
вообще со Spectrum. И первой полноценной операционкой была IS-DOS. Потом началась
эпопея MS Windows (3.0, 3.11, 95, NT 3.51, NT 4.0 SP3, 98, Me, 2000, XP, Server
2003). Написал версии не в порядке появления, а в порядке моего знакомства с
ними. С *nix системами знаком не очень давно. Некоторые напрвления идеологии
пока не понял (объяснить, что за направления, не смогу). Как я считаю, главное,
что стало понятно из этой дискуссии (правильнее дебат) - это то что в *nix системах
ползователь не обезьяна с гранатой, а нормальный, дееспособный индивидум. Константин,
Вам большое спасибо. Если есть желание публичного продолжения нашего разговора,
то я готов к этому. Если нет, то все коментарии на мои высказывания готов принять
в личку.
> > PS. Употребление жидкости с большим процентным содержанием некоего химического
> > соединения не позволило своевременно продолжить debate. Приношу свои извинения.
> Дык, праздники же! :)
Если бы только праздники, а ведь существуют переговоры с людьми от которых что-то
зависит.