[решено] причуды стандартного ввода

Столкнулся со странным поведением:
./prog < test.txt
работает.

А вот
cat test.txt | ./prog
не работает (exception).

В чём разница для программы в этих двух случаях?
такие дела.
cucullus
./prog
не умеет работать с пайпом
смотря что в ./prog
В смысле не умеет? Умеет. Точнее умел, до некоторого изменения, которое, по идее не должно было повлиять на чтение из стандартного ввода.

Вопрос пока общий. Чем различаются (для программы) эти два способа "скармливания" на стандартный ввод.
такие дела.
cucullus
Точнее умел, до некоторого изменения, которое, по идее не должно было повлиять на чтение из стандартного ввода
но повлияло
проверь, вдруг с stdin чёто, иначе сломалась ./prog
cat /etc/fstab|cat /dev/stdin
cucullus
Вопрос пока общий. Чем различаются (для программы) эти два способа "скармливания" на стандартный ввод.
по сути ничем, удобством
./prog < test.txt
ну ту вы заменили stdin на test.txt
cat test.txt | ./prog
а тут содержимое файла вывели в stdout и соединили с stdin второй программы
ну в целом пишут что разница в обработке stderr.
фундаментальной разницы нету.
Ошибки в тексте-неповторимый стиль автора©
но вообще да, странно, возможно действительно в системе чего-то перенастроено
т.к. вот такой простой пример работает и так и этак

> cat mmm.sh
#!/bin/bash
cat /dev/stdin

> ./mmm.sh < /etc/hostname
grayich
> cat /etc/hostname|./mmm.sh
grayich
grayich
иначе сломалась ./prog
в этом нет сомнений.
я просто пытаюсь понять что именно могло сломаться. на глаз не видно.
а как подать вывод с конвейера в отладчик я что-то не догоняю...
такие дела.
ничего не перенастроено. одинаково на разных машинах
такие дела.
echo $SHELL
 
Зарегистрироваться или войдите чтобы оставить сообщение.