有任何的方式来运行,只有从键盘 用户输入停止,不要求每个周期继续无限循环?在一个C程序 (我正在开发一个C聊天,用for(;;)
循环读取条目,我只有在用户想要键入并发送消息时才需要停止它)。做,而在键盘输入的无限循环停止 - Visual C
回答
没有指定的操作系统,所以我会承担一些POSIX兼容的操作系统。
您可以使用select。这可以用来阻塞一组文件描述符(在你的情况下,标准输入),有限的超时或不确定的阻塞。
我的猜测是,因为这是一个聊天程序,你也想这样做一些其他的文件描述符,像聊天TCP套接字。所以你可以在一个调用上测试输入。
在Windows控制台的情况下,你应该能够使用GetStdHandle和WaitForSingleObject的/ WaitForMultipleObjects的,如果选择不为你工作。
它的Windows操作系统 – frx08
Windows有一个POSIX兼容层并支持select()。 –
@ frx08:如果是windows,是控制台吗?窗户gui?你也应该指定。 – 2010-02-25 00:28:50
有一些在Windows这样做的方法。假设你使用VC++,最简单的方法是使用_kbhit()
。如果您想直接使用Win32 API,则可以调用GetNumberOfConsoleInputEvents()
并查看返回值是否非零。
你也可以做一个重叠读,每次循环调用WaitForSingleObject
,超时值为0.零等待表示无论是否有输入,它都会立即返回。返回值会告诉您是否有任何数据:WAIT_TIMEOUT表示尚未读取数据,WAIT_OBJECT0表示您有一些数据正在等待处理。
如何在循环中使用kbhit()/ getch()从缓冲区中读取键之后重置stdin句柄从信号状态? –
@techtonik:如果你打算使用句柄,你可能想要在整个过程中使用控制台功能。 –
- 1. 停止并恢复键输入的无限循环
- 2. Python - 停止无限循环的键盘命令?
- 3. 停止键盘输入?
- 4. 在C++停止无限循环时按键被按下
- 5. c编程:停止无限循环
- 6. javascript停止无限循环
- 7. (C++)不会在std :: cin中停止并进入无限循环?
- 8. C在输入键停止
- 9. 当输入错误输入时无限循环无限循环
- 10. 无限循环在applescript停止注销
- 11. C++无限循环与输入
- 12. 键盘输入&Win32消息循环
- 13. 停止从超时的无限循环
- 14. 键盘如何知道无限循环?
- 15. 停止一个无限循环在Matlab中按下一个键
- 16. 扫描键盘输入而不暂停
- 17. raw_input()停止无限while循环吗?
- 18. 如何停止无限while循环
- 19. 如何停止无限循环?
- 20. 停止javascript无限循环onmouseout?
- 21. 命令停止无限循环?
- 22. QThread:如何停止无限循环
- 23. php web无限循环 - 如何停止
- 24. .htaccess无限循环如何停止
- 25. 如何在Java中无限循环地停止循环?
- 26. 键盘输入循环时出错
- 27. 停止循环C#?
- 28. Arduino Leonardo陷入无限的键盘仿真循环
- 29. 在无限循环中停止死亡风车目标C
- 30. 使用键盘在重定向输入期间停止使用键盘,而不使用SIGINT在C
寻找'break'语句? –
不,我认为他正在寻找一种方式来执行无阻塞读取stdin –
没有我需要一个没有给每一次确认编辑:正确 – frx08