考虑以下代码,每隔几秒输出一些文本:
int main (void)
{
int status = 0;
if (fork() == 0)
{
while (1)
{
printf ("whatever...\n");
// printf ("\rwhatever...\n");
sleep (3);
}
}
while (wait (&status) > 0);
return 0;
}
我遇到的问题是,如果我在终端中输入了一些文本,则输出的文本将被添加到输入缓冲区的末尾,如:
> whatever...
< something
> somethingwhatever...
<
如何让它打印输出缓冲区并同时保持输入缓冲区完好无损,如:
> whatever...
< something
> whatever...
< something
答案 0 :(得分:1)
如果您依赖终端提供的标准I / O处理,则无法控制此方面。
您可以做的是手动处理。您可以使用tput
或ncurses
将输入和输出分成两列,也可以关闭输入回显(不会显示输入)并自行显示输入。
第二种方法的问题在于它很可能会让用户感到困惑。