【发布时间】:2019-09-28 02:30:54
【问题描述】:
我正在做一个计数器,显示用户必须输入多少秒。问题是当我使用 scanf() 时,程序将停止并等待答案,但我不希望这样。即使用户没有放任何东西,我也想继续运行计数器。
例子:
for(int i=10;i>=0;i--){
i==0? printf("time over\n"):printf("%d seconds left\n",i);
scanf("%s", decision);
sleep(1);
}
我能做些什么来解决这个问题?
【问题讨论】:
-
你必须使用线程来实现它
-
你使用的是什么操作系统?
-
@mangusta 在Linux上,你可以在
stdin:stackoverflow.com/questions/717572/…上做非阻塞IO -
这并不容易。使用线程是一种方式,虽然不是唯一的方式。您还可以考虑进行即时、非阻塞、一次一个字符的输入。 (这不会涉及
scanf!) -
使用
select, pselect, poll or epoll然后轮询一组带有超时设置的文件描述符是一种方法,手动使用信号处理程序是另一种方法。scanf甚至没有进入跑步。