Como comandos como ls
sabem qual é o seu stdout?
Parece que ls
está operando diferente, dependendo do que o stdout de destino é. Por exemplo, se eu fizer:
ls /home/matt/tmp
o resultado é:
a.txt b.txt c.txt
No entanto, se eu fizer
ls /home/matt/tmp | cat
o resultado é (ou seja, nova linha por resultado):
a.txt
b.txt
c.txt
O processo recebe um descritor de arquivo 1 para stdout, certo? Como ele determina como formatar o resultado? O descritor de arquivo revela informações?