我写了一个信号处理程序,它从缓冲区打印一行,它首先删除前一个提示,打印一行并在屏幕的末尾再次打印提示。这是我的经纪人。
void print(int param)
{
int c;
signal(SIGALRM, print);
printf("\b\b\b\b\b\b\b\b\b\b\033[0K");
print_line();
printf("\033[7m--HEY--\033[0m");
}
这个处理程序正在做我想要的一切,除了我在屏幕的末尾看不到提示。我不明白为什么我无法看到提示?
答案 0 :(得分:2)
标准输出通常是行缓冲的。以\n
字符结尾,或者像这样明确地刷新:
fflush(stdout);