考虑以下每隔几秒输出一些文本的代码:
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
最佳答案
如果您依赖终端提供的标准 I/O 处理,则您无法控制这方面。
您可以做的是手动处理。您可以使用 tput
或 ncurses
将输入和输出分成两列,或者您可以关闭输入回显(输入不会显示)并自己显示输入。
第二种方法的问题在于它很可能会让用户感到困惑。
关于c - 打印输出时如何保持stdin和stdout分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33999852/