在用户输入时中断,否则继续
Break on user input, otherwise continue
我有一个将要处理大量数据的程序。我已经准备好了一些东西,这样它就可以停止,并从它离开的地方恢复。
我希望能够设置它运行一段时间(例如处理1000个文件),但能够在用户输入时转义,例如:
for(int i = 0; i < 1000; i++) {
if( checkForUserInput() ) { break; }
processFile(i);
/*
* ...
*
*/
}
我知道你可以提示用户输入,而如果符合某些条件则中断…但是我想让它默认在没有用户输入的情况下继续运行。
我想我可能在很久以前在java中做过同样的事情,而IIRC我最终使用了线程——这也是这里处理的唯一方法吗?或者是否有一种方法来查找键盘转义序列,如ctrl - c,然后以某种方式表现?
编辑:如果有一个原因为什么这样的事情不能在没有线程的情况下完成,我很想知道为什么,
谢谢!
用户输入被定义为阻塞。所以你需要设置一个超时时间,当你决定没有用户输入时,打破阻塞并继续。如果没有线程/中断,你就无法做到这一点。
不同平台处理用户中断的方式不同。阅读信号处理
如前所述,signal()可用于捕获控制台类型应用程序中的CTRL-C。但是没有标准的方法来读取输入而不阻塞。
针对不同的平台有一些不同的解决方案,所有这些解决方案都相当麻烦(当然,一旦您有了代码,将其复制到另一个项目中并不难)。
正如评论中提到的,C和c++是为在大量不同的机器上运行而设计的,你在规范中对"你必须这样做"的要求越多,语言就越受限制,以至于它不能在特定的系统上工作——如果在你的终端和计算机之间只有每秒110位的半双工(数据一次只能走一条路)呢?而且你只有一个处理器,运行频率为1.2MHz……
相关文章:
- 循环后如何继续阅读
- 我正在尝试使用 c++ 创建一个货币转换程序,我不知道如何继续
- C++:继续创建新的变量可以吗
- 类成员和中断
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- 我的代码运行良好,但在游戏循环中中断
- 使用带有MCP23017的 pigpio 进行中断读取
- 为什么我在 AVR 中的中断无法正常工作?
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 使用 UDP 中断 while()-循环
- C++:在不中断共享的情况下通过引用传递共享 PTR?
- 如何在 CompleteAsyncIO 中访问 IOMemoryBufferDescriptor,该描述符通过中断 EP
- 如何为伺服电机创建中断或返回值?
- 附加到 gdb 会中断并且不会继续该过程
- 如何使用继续或中断表达式编写多行宏
- 中断或继续的C/ c++宏
- c++继续与中断
- 标记和未标记中断,在 C# 或 C++ 中继续
- 为什么此中断不终止程序,而是继续执行下一个操作?
- 在用户输入时中断,否则继续