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