【发布时间】:2016-03-04 03:54:13
【问题描述】:
考虑以下每隔几秒输出一些文本的代码:
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
【问题讨论】:
-
恐怕您必须使用一些进程间锁定机制(例如信号量)。
-
这不是微不足道的,需要更多关于你的程序如何处理输入的信息。你在使用readline之类的东西吗?扫描? std::cin?
-
流没有混合。这是您的控制台输出。禁用回显并按顺序打印输入和输出。
-
@JonasWielicki 我正在创建一个类似命令的界面,并希望使用 readline 来读取输入。
-
@razzak:我不会。因为您的问题缺乏信息,任何全面的答案对于本网站来说都太长了。你有一些关键词,所以你可以自己挖掘。无论如何你都需要这些知识,所以请学习钓鱼,而不仅仅是如何吃鱼。