Apakah ada perbedaan antara unbuffer (1) dan stdbuf (1)? Dari apa yang saya kumpulkan, unbuffer membuat lebih dari "upaya terbaik" memanggil fungsi libc set (X) di awal, dan membiarkan semuanya terjadi?
13
Mereka bekerja dengan cara yang sangat berbeda.
Penggunaan unbuffer program berharap untuk menjalankan perintah yang disebutkan. Karena mengharapkan membuat pseudo-tty untuk dilampirkan pada proses stdout anak, anak mungkin tertipu dengan berpikir bahwa ia harus menggunakan buffer-line daripada buffer-blocking. Beberapa program akan mengubah perilaku mereka ketika isatty (stdout) benar, yang lain tidak dan sangat sulit untuk mengetahui mana yang mau dan yang tidak.
Program stdbuf mencoba meletakkan libstdbuf di depan libc untuk binari yang dimuat secara dinamis. Di mana libstdbuf mendefinisikan kembali strategi buffering standar dari panggilan libc stdio.
Saya menemukan ini oleh
apt-get source expect coreutils
dan membaca sumber yang relevan untuk setiap program.
unbuffer -p
mungkin tampak tidak berfungsi dengan benar jika proses input input ke unbuffer keluar. Pertimbangkan:process1 | unbuffer -p process2 | process3
Jika process1 keluar, process2 mungkin belum selesai. Mustahil bagi orang yang tidak tahu harus menunggu lama untuk menunggu