Я пытаюсь использовать stdbuf для выравнивания буфера вывода программы, но я не могу заставить его работать так, как я ожидал. Используя этот код:
#include <stdio.h>
#include <unistd.h>
int main (void)
{
int i=0;
for(i=0; i<10; i++)
{
printf("This is part one");
fflush(stdout);
sleep(1);
printf(" and this is part two\n");
}
return 0;
}
Я вижу This is part one
, одна секунда ожидания, затем and this is part two\nThis is part one
.
Я ожидал, что запустив его как
stdbuf --output=L ./test.out
приведет к задержке на 1 секунду, а затем This is part one and this is part two\n
будет повторяться с интервалом в одну секунду. Вместо этого я вижу тот же вывод, что и в случае, когда я не использую stdbuf. * 1012 *
Неправильно ли я использую stdbuf или вызов fflush считает "настройкой" буферизации, как описано на странице справки sdtbuf ?
Если я не могу использовать stdbuf для линейного буфера таким образом, есть ли другой инструмент командной строки, который делает это возможным?