0

我编写了一个从缓冲区打印一行的信号处理程序,它首先删除前一个提示,打印一行并在​​屏幕末尾再次打印提示。这是我的处理程序。

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");
}

这个处理程序正在做我想做的一切,除了我在屏幕末尾看不到提示。我不明白为什么我不能看到提示?

4

1 回答 1

2

标准输出通常是行缓冲的。以字符结尾\n,或者像这样显式刷新:

fflush(stdout);
于 2013-04-06T15:39:33.650 回答