Yanıtlar:
Tamamen farklı şekillerde çalışırlar.
Program arabelleğe alma, adlandırılmış komutu çalıştırmak için bekliyoruz kullanır. Bekleme, çocuk sürecinin stdout'una eklemek için sahte bir yaratılış oluşturduğundan, çocuk blok tamponlama yerine satır tamponlama kullanması gerektiğini kandırır. Bazı programlar isatty (stdout) doğru olduğunda davranışlarını değiştirir, diğerleri olmaz ve hangisinin hangisinin hangisinin olmayacağını bilmek çok zordur.
Program stdbuf, dinamik olarak yüklenmiş ikili dosyalar için libstdbuf'u libc önüne koymaya çalışır. Burada libstdbuf, libc stdio çağrılarının varsayılan arabellekleme stratejisini yeniden tanımlar.
Bunu tarafından buldum
apt-get source expect coreutils
ve her program için ilgili kaynağın okunması.
unbuffer -p
arabelleğe alma işlemine bir girdi besleme girişi çıkarsa yanlış çalışıyor gibi görünebilir.process1 | unbuffer -p process2 | process3
Şunu düşünün: İşlem1 çıkarsa, işlem2 henüz bitmemiş olabilir.