Eğer yazarsam şunu fark ettim:
ls --color=auto
veya
ls --color=auto | cat
ls --color=auto > >(cat)
Aynı çıktıyı göremiyorum. Bu nedenle, bir programın STDOUT'un bir şeye bağlanmış olup olmadığını bilme kabiliyetine sahip olduğunu varsayıyorum. Soru, nasıl biliyor?
ENV değişkenlerini kontrol ettim envve env | cataynı şeyi aldım. Cevap başka bir yerde. Nerede olduğunu çözemiyorum.
Bu sorudanisatty() , bu fonksiyonu sağlayanı kullanabileceğimi öğrendim ? kabuğun veya çekirdeğin bir parçası mı? Daha da ileri giderek, bu fonksiyonun POSIX standardının bir parçası olduğunu görüyorum.
Artık, aralarında birkaç mekanizma ile iletişim kurabilen iki sürecin olduğunu biliyorum:
- STDIN / STDOUT / STDERR
- Koddan çık
- Ortam Değişkenleri
- Sistem çağrıları
Bash ve ls her ikisi de programdır. Böylece bilgi alışverişinde sadece listelenen mekanizmaları kullanabilirler.
Bunun arkasındaki asıl soru isatty(), bilgileri bash'tan nasıl alıyor?
isatty(). Sorumu şu şekilde değiştirmem gerekecek: isatty()Bir işlev kabuğa mı yoksa çekirdeğe mi bağlı?