LINUX.ORG.RU

Почему ls выдаёт несколько столбиков, а ls | cat один?

 ,


0

1

ls как-то определяет куда его вывод направлен? У ls же 2 вывода: STDOUT и STDERR. А pipe «|» и перенаправление «>» в файл просто определяют куда будет идти STDOUT? Как тогда ls узнаёт куда его STDOUT направлен?


fstat(1)

> и | подключаются между fork и exec, когда новый процесс уже создан, но исполняемый файл еще не загружен/не запущен. > просто добавляет freopen("filename.txt", stdin) перед exec. после exec новый процесс может делать с этим дескриптором что угодно

MyTrooName ★★★★★
()
Последнее исправление: MyTrooName (всего исправлений: 2)

readlink /proc/self/fd/1

anonymous
()
Ответ на: комментарий от mos

Как в популярной книжке, что ли? Отправишься в путешествие в этом направлении, потратишь годы, чтобы в конце понять, что ответ был прямо тут, в этом треде, и все эти скитания были не нужны?

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

ну это уже на усмотрение ТС))

//так-то любой нормальный человек знает, что программа может менять свое поведение основываясь на том, куда пихают её вывод. ну вот и ТС приобщился)

mos ★★☆☆☆
()
Ответ на: комментарий от symon2014

cat здесь ничего не меняет, какие к нему претензии? ls ему уже передаёт данные в один столбик же, видя, что его вывод уйдёт не в терминал.

Reineke
()

Он чует, что используется пайп и ведёт себя по-другому.

IPR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.