Відповіді:
Вони працюють абсолютно різними способами.
Програмний розблокувальник використовує очікуваний запуск названої команди. Оскільки очікує, що створює псевдо-tty для приєднання до stdout дочірнього процесу, дитина може обдурити, що він повинен використовувати буферизацію ліній замість блокування буферизації. Деякі програми змінять свою поведінку, коли isatty (stdout) правдивий, інші - ні, і дуже важко зрозуміти, що буде, а що - ні.
Програма stdbuf намагається поставити libstdbuf перед libc для динамічно завантажених бінарних файлів. Де libstdbuf переосмислює стратегію буферизації за замовчуванням викликів libc stdio.
Я це з'ясував
apt-get source expect coreutils
та читання відповідного джерела для кожної програми.
unbuffer -p
можуть здатися, що вони працюють неправильно, якщо вихід із подачі процесу на скасування завантаження. Поміркуйте:process1 | unbuffer -p process2 | process3
Якщо процес1 закінчується, процес2 може ще не закінчитися. Неможливо, щоб