我想在程序中显示进度条,所以我添加了
#include <stdio.h>
#include <unistd.h>
int main() {
puts("begin");
for (int i = 0; i < 100; i++) {
printf("%d%% finished.\r", i);
fflush(stdout);
usleep(100000);
}
puts("end");
}
当它输出到stdout
时,它很好地显示了一条指示当前进度的线。
但是,如果我将其输出定向到文件,那么printf("%d%% finished.\r", i);
的所有行都将丢失。
是否可以将所有行保留在文件中?
答案 0 :(得分:1)
输出文件中不太可能缺少这些行,但是有可能将文件复制到终端的速度很快,以至于每行都会覆盖前一行而没有机会让你看到它。与您的程序不同,cat
不会在行之间暂停。如果最后一行至少与前一行一样长,那么最后一行最后一行是可见的。
使用od -x
以十六进制转储文件以检查实际文件内容。